django python无法连接';str';和'__代理';物体
我在Django应用程序中有django python无法连接';str';和'__代理';物体,python,django,Python,Django,我在Django应用程序中有forms.py from django import forms from django.core.urlresolvers import reverse_lazy class ComposeMessageForm(forms.Form): ccc = reverse_lazy('user_api') st = 'customSelectize:u_r,modelUrl:"'+ reverse_lazy('user_api') +'", choiceField:"
forms.py
from django import forms
from django.core.urlresolvers import reverse_lazy
class ComposeMessageForm(forms.Form):
ccc = reverse_lazy('user_api')
st = 'customSelectize:u_r,modelUrl:"'+ reverse_lazy('user_api') +'", choiceField:"username"'
user_receivers = forms.ModelMultipleChoiceField(
queryset=User.objects.all(),
required=False,
widget=forms.SelectMultiple(
attrs={
'data-bind': st,
'placeholder': 'Select USERS'}))
当我运行它时,我得到
TypeError at /message/compose/
cannot concatenate 'str' and '__proxy__' objects
如何做到这一点?我不知道代理对象是什么
url.py
是:
from django.conf.urls import patterns, include, url
from rest_framework.urlpatterns import format_suffix_patterns
from django.contrib import admin
from msgin import views
urlpatterns = patterns('',
url(r'^$', 'ms.views.home', name='home'),
url(r'^message/', include('msgin.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^msgs/$', views.MessageList.as_view()),
url(r'^msgs/(?P<pk>[0-9]+)/$',
views.MessageDetail.as_view()),
url(r'^users/$', views.UserList.as_view(),
name='user_api'),
url(r'^users/(?P<pk>[0-9]+)/$',
views.UserDetail.as_view()),
url(r'^groups/$', views.GroupList.as_view(),
name='groups_api'),
url(r'^groups/(?P<pk>[0-9]+)/$',
views.GroupDetail.as_view()),
)
从django.conf.url导入模式,包括,url
从rest\u framework.urlpatterns导入格式\u后缀\u模式
从django.contrib导入管理
从msgin导入视图
urlpatterns=模式(“”,
url(r'^$'、'ms.views.home',name='home'),
url(r“^message/”,包括('msgin.url'),
url(r“^admin/”,包括(admin.site.url)),
url(r'^msgs/$,views.MessageList.as_view()),
url(r'^msgs/(?P[0-9]+)/$”,
views.MessageDetail.as_view()),
url(r“^users/$”,views.UserList.as_view(),
name='user_api'),
url(r'^users/(?P[0-9]+)/$”,
views.UserDetail.as_view()),
url(r“^groups/$”,views.GroupList.as_view(),
name='groups_api'),
url(r'^groups/(?P[0-9]+)/$”,
views.GroupDetail.as_view()),
)
代理url是稍后解析的url,而不是在调用reverse\u lazy()
func时解析的url。对于这种具体情况,您可以使用简单的reverse()
函数,而不是惰性函数
但如果要在强制代理url为字符串时使用reverse\u lazy()
:
st = 'customSelectize:u_r,modelUrl:"'+ str(reverse_lazy('user_api')) +'", choiceField:"username"'
或使用字符串格式:
st = 'customSelectize:u_r,modelUrl:"%s", choiceField:"username"' % reverse_lazy('user_api')
在类定义中使用
reverse\u lazy
没有任何好处,因为不能是“lazy”
你有两个选择
1) 使用reverse
2) 将代码更改为
class ComposeMessageForm(forms.Form):
user_receivers = forms.ModelMultipleChoiceField(queryset=User.objects.all(),
required=False)
def __init__(self, *args, **kwargs):
super(ComposeMessageForm, self).__init__(*args, **kwargs)
st = 'customSelectize:u_r,modelUrl:"%s", choiceField:"username"' % reverse_lazy('user_api')
self.fields['user_receivers'].widget=forms.SelectMultiple(attrs={'data-bind': st,
'placeholder': 'Select USERS'})
***配置不当:包含的urlconf“ms.url”中似乎没有任何模式。如果您在文件中看到有效的模式,那么问题可能是由循环导入引起的。虽然我在ms.urls中有模式,但我得到了上述错误。当我尝试将代理对象转换为str时,我得到了此错误***配置不当:包含的urlconf“ms.urls”中似乎没有任何模式。如果您在文件中看到有效的模式,则问题可能是由循环导入引起的。在这种情况下,您可能无法使用
reverse
。见我的选择2。