2

我有以下行urls.py

url(r'^changepassword/$', 'django.contrib.auth.views.password_change',
    {'template_name': 'account/changepass.html', 
     'post_change_redirect' : reverse('settings')}, name='change_password'),

但是,当加载不同的视图(带有指向此 url 的链接)时,我得到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

4 回答 4

1

您不应reverse在加载 url 配置之前执行的代码中使用,例如 insettings.py或在您的情况下为 url 配置。

从 Django 1.4 开始,您可以在这些情况下使用reverse_lazy而不是。reverse

于 2012-08-15T11:41:34.380 回答
0

删除reverse呼叫并更改它只是为了/settings/解决这个问题。我不确定为什么reverse不在这里工作。

于 2012-08-15T08:58:47.413 回答
-1

尝试:(<a href='{% url "change_password" %}'>用引号括起来的名称 -change_password应该是一个字符串,而不是一个模板变量)

于 2012-08-14T17:38:05.507 回答
-1

你可以这样使用:{% url django.contrib.auth.views.password_change %}

于 2012-08-14T17:43:44.217 回答