尽管名称定义了TemplateSyntaxError?

时间:2012-08-14 16:50:25

标签: django django-templates

我在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>

可能出现什么问题?

4 个答案:

答案 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 %}