【问题标题】:NoReverseMatch at /password_reset/done//password_reset/done/ 处的 NoReverseMatch
【发布时间】: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'),
    ]

【问题讨论】:

  • 请添加完整的错误跟踪
  • 我已经添加了

标签: python django reset forgot-password


【解决方案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()。您是否将它们传递到您的模板上下文中?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2018-09-25
    • 2018-12-09
    • 2020-10-28
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多