/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 的正则表达式不匹配。您必须使用正确的uidb64token 调用reverse()。您是否将它们传递到您的模板上下文中?

【讨论】:

我已按照本教程中给出的相同说明进行操作:simpleisbetterthancomplex.com/tutorial/2016/09/19/… 非常感谢您的帮助

以上是关于/password_reset/done/ 处的 NoReverseMatch的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 甚至索引处的偶数和奇数索引处的奇数

打印文件内容的程序无法运行,返回“<address> 处的指令引用 <address> 处的内存”错误

Workbench 说:使用 root 用户通过 34.xxx.xxx.xxx:22 处的 SSH 隧道连接到 127.0.0.1:3306 处的 MySQL 失败

位置 4 处的意外令牌左括号()

/accounts/profile/ 处的 TemplateSyntaxError

TemplateDoesNotExist 处的错误 /