我想要在modelform类中获取url。我看过 The included urlconf manager.urls doesn't have any patterns in it。但reverse_lazy功能不适用于我的情况。
包含的urlconf xxxx.urls中没有任何模式
我的情况下:
captchahelper为应用在根。
根urlpatterns的(下根项目urls.py):
urlpatterns = patterns("",
.....
# captcha
url(r'^captcha/', include('captchahelper.urls')),
.....
}
验证码URL模式(下captchahelper项目urls.py):
urlpatterns = patterns('',
url(r'^$', views.captcha , name="views_captcha"),
url(r'^refresh/$', views.refresh , name="views_refresh_captcha"),
)
图。 py下captchahelper项目
def captcha(request):
.....
return HttpResponse(captcha.gen_img_by_code(code),'image/jpeg')
得到:
class CaptchaForm(forms.ModelForm):
.....
captcha = Captcha()
encoded = captcha.get_encrypt_code()
captcha_image = urlresolvers.reverse_lazy('views_captcha') + '?encoded='+encoded
.....
def clean_captcha_text(self):
....
转出错误:
/帐号/注册/是当前的URL(也包括root.urls),当访问者浏览该页面,上面的类将在相应的view函数中被init初始化。
ImproperlyConfigured at /account/signup/
The included urlconf root.urls doesn't have any patterns in it
D:\Python27\lib\site-packages\django\core\urlresolvers.py in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) ...
▼ Local vars
Variable Value
ns_pattern
''
viewname
'views_captcha'
args
[]
current_app
None
prefix
u'/'
parts
['views_captcha']
resolver
<RegexURLResolver root.urls (None:None) ^/>
kwargs
{}
path
[]
resolved_path
[]
urlconf
'root.urls'
view
'views_captcha'
我只是觉得Django是如此复杂,因为我来自ASP MVC3.I可以很容易从像MVC3.But Url.Action("CaptchaController", "CaptchaView", new { encoded = "encoded"})
一份声明中生成一个查询字符串URL如果我想生成在Django查询字符串的URL ,代码将是reverse('captcha') + '?encoded=' + encoded
。它真的很丑....
'views。views。captcha'是我的查看函数,'root.urls'是urls.py根目录下的项目 – Mithril
嗯。你是从URL'/ account/signup /'调用'captcha'吗?如果是这样,您需要在captchahelper中添加该网址。 – Jason
另外,你有'captchahelper'定义为'settings.py'中安装的应用程序吗? – Jason