NoReverseMatch at / password_reset / done /

时间:2017-08-22 07:36:36

标签: python django reset forgot-password

我刚刚从这个tutorial学到了重置django中的密码。但我无法解决

  

错误:NoReverseMatch at / password_reset / done

 from django.contrib.auth import views as auth_views

urlpatterns = [
    url(r'^password_reset/$', auth_views.password_reset, name='password_reset'),
    url(r'^password_reset/done/$', auth_views.password_reset_done, name='password_reset_done'),
    url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.password_reset_confirm,
        name='password_reset_confirm'),

    url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'),
    ]

2 个答案:

答案 0 :(得分:1)

追溯的主要部分是:

Reverse for 'password_reset_confirm' with keyword arguments 
'{u'uidb64': '', u'token': ''}' not found. 1 pattern(s) tried: 
['reset/(?P<uidb64>[0-9A-Za-z_\\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$']

空字符串与正则表达式不匹配。您必须使用正确的reverse()uidb64致电token。您是否将它们传递到模板上下文中?

答案 1 :(得分:1)

您的password_reset_done.html模板不正确。它包含以下引起错误的url标记。

{% url 'password_reset_confirm' uidb64=uid token=token %} 

但该网址属于password_reset_email.html模板,该模板已呈现并通过电子邮件发送给用户。

password_reset_done.html模板应该告诉用户密码已经重置并检查他们的电子邮件。您链接的tutorial显示的是有效的模板,您已将其复制错误。