我刚刚从这个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'),
]
答案 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显示的是有效的模板,您已将其复制错误。