Django:内置密码重置视图

时间:2013-12-01 00:49:52

标签: python django authentication passwords reset

我正在关注文档,当我点击页面重新启动密码时,我收到NoReverseMatch错误。

/ resetpassword上的NoReverseMatch / 使用参数'()'和关键字参数'{}'找不到'password_reset_done'。尝试了0种模式:[]

urls.py:

(r'^resetpassword/passwordsent/$', 'django.contrib.auth.views.password_reset_done'),
(r'^resetpassword/$', 'django.contrib.auth.views.password_reset', name="reset_password"),
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>,+)/$', 'django.contrib.auth.views.password_reset_confirm'),
(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),

以下是在我的base.html模板中调用此网址的代码:

<a href="{% url 'reset_password' %}">Reset Password</a>

我一直在这工作几个小时。 (我是初学者!)非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:11)

将网址名称添加到urls.pypassword_reset_done的条目

(r'^resetpassword/passwordsent/$', 'django.contrib.auth.views.password_reset_done', name='password_reset_done'),

在内部,password_reset视图使用reverse('password_reset_done')查找重置密码后发送给用户的位置。 reverse可以采用函数名称的字符串表示形式,但它需要匹配模式中使用的表单 - 在这种情况下,它不能匹配,因为在模式中指定了完整路径但在反向模式中没有指定呼叫。您可以从模块中导入视图,并在模式中仅使用它们的名称,或者如果您更喜欢name参数,则可以在模式中使用前缀。

https://docs.djangoproject.com/en/dev/ref/urlresolvers/#django.core.urlresolvers.reverse了解reverse的详细信息。