Django:内置密码重置视图

8
我正在遵循文档,但是当我点击重新设置密码页面时,出现了NoReverseMatch错误。
在/resetpassword/处,找不到'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'),

这是调用此URL的代码,位于我的base.html模板中:

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

我已经花了几个小时在这上面了(我是初学者!),任何帮助都将不胜感激,谢谢!

1个回答

11
在您的urls.py中为password_reset_done添加URL名称:
(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的详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接