我在urls.py
中有以下一行:
url(r'^changepassword/$', 'django.contrib.auth.views.password_change',
{'template_name': 'account/changepass.html',
'post_change_redirect' : reverse('settings')}, name='change_password'),
然而,当加载不同的视图(带有此网址的链接)时,我得到TemplateSyntaxError
:
/ account /
处的TemplateSyntaxError渲染时捕获NoReverseMatch:反向'change_password',参数'()'和关键字参数'{}'未找到。
In template ..../templates/account/settings.html, error at line 7
<p><a href='{% url change_password %}'>Change your password</a>
可能出现什么问题?
答案 0 :(得分:1)
您不应在加载url配置之前执行的代码中使用reverse
,例如在settings.py
中,或者在您的情况下,在url配置中。{/ p>
从Django 1.4开始,在这些情况下,您可以使用reverse_lazy
代替reverse
。
答案 1 :(得分:0)
删除reverse
来电并将其更改为/settings/
修复此问题。我不确定reverse
为什么不在这里工作。
答案 2 :(得分:-1)
尝试:<a href='{% url "change_password" %}'>
(引号中的名称 - change_password
应该是字符串,而不是模板变量)
答案 3 :(得分:-1)
您可以这样使用:{% url django.contrib.auth.views.password_change %}