【发布时间】:2013-07-15 17:38:48
【问题描述】:
我想在 modelform 类中获取一个 url。
我在
The included urlconf manager.urls doesn't have any patterns in it。但是 reverse_lazy 功能不适用于我的情况。
我的情况:
captchahelper 是 root 中的 app。
root urlpatterns(根项目下的urls.py):
urlpatterns = patterns("",
.....
# captcha
url(r'^captcha/', include('captchahelper.urls')),
.....
}
captcha urlpatterns(captchahelper 项目下的urls.py):
urlpatterns = patterns('',
url(r'^$', views.captcha , name="views_captcha"),
url(r'^refresh/$', views.refresh , name="views_refresh_captcha"),
)
captchahelper 项目下的view.py
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):
....
结果错误:
/account/signup/ 是当前url(也包含在root.urls中),当访问者查看这个页面时,上面的类会在相应的视图函数中初始化。
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。我可以很容易地从 MVC3 中的 Url.Action("CaptchaController", "CaptchaView", new { encoded = "encoded"}) 之类的语句中生成一个带有查询字符串的 url。但是如果我想在 django 中生成一个带有查询字符串的 url,则代码将是reverse('captcha') + '?encoded=' + encoded。真的很难看....
【问题讨论】: