/password_reset/done/ 处的 NoReverseMatch

NoReverseMatch at /password_reset/done/

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

error: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'),
    ]

回溯的主要部分是:

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})/$']

空字符串与 url 的正则表达式不匹配。您必须使用适当的 uidb64token 调用 reverse()。您是否将它们传递到您的模板上下文中?

您的 password_reset_done.html 模板不正确。它包括以下导致错误的 url 标记。

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

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

password_reset_done.html 模板应该告诉用户密码已重置并检查他们的电子邮件。您链接到的 tutorial 显示了一个有效的模板,您复制的模板不正确。