/password_reset/done/ 处的 NoReverseMatch
Posted
技术标签:
【中文标题】/password_reset/done/ 处的 NoReverseMatch【英文标题】:NoReverseMatch at /password_reset/done/ 【发布时间】:2018-01-30 09:11:26 【问题描述】:我刚刚从这个tutorial 学到在 django 中重置密码。但我无法解决
错误:NoReverseMatch 在/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'),
]
【问题讨论】:
请添加完整的错误跟踪 我已经添加了 【参考方案1】:您的password_reset_done.html
模板不正确。它包含以下导致错误的 url 标签。
% url 'password_reset_confirm' uidb64=uid token=token %
但是,该 url 属于 password_reset_email.html
模板,该模板呈现并通过电子邮件发送给用户。
password_reset_done.html
模板应该告诉用户密码已被重置并检查他们的电子邮件。您链接的tutorial 显示了一个有效的模板,您复制的模板不正确。
【讨论】:
【参考方案2】:traceback的主要部分是:
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 的正则表达式不匹配。您必须使用正确的uidb64
和token
调用reverse()
。您是否将它们传递到您的模板上下文中?
【讨论】:
我已按照本教程中给出的相同说明进行操作:simpleisbetterthancomplex.com/tutorial/2016/09/19/… 非常感谢您的帮助以上是关于/password_reset/done/ 处的 NoReverseMatch的主要内容,如果未能解决你的问题,请参考以下文章
打印文件内容的程序无法运行,返回“<address> 处的指令引用 <address> 处的内存”错误
Workbench 说:使用 root 用户通过 34.xxx.xxx.xxx:22 处的 SSH 隧道连接到 127.0.0.1:3306 处的 MySQL 失败