Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django python无法连接';str';和'__代理';物体_Python_Django - Fatal编程技术网

django python无法连接';str';和'__代理';物体

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:"

我在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:"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。