【问题标题】:Django: password reset ReverseMatch errorDjango:密码重置 ReverseMatch 错误
【发布时间】:2013-12-17 15:15:38
【问题描述】:

我无法让 password_reset_confirm 正常工作。我查看了许多解决方案,但似乎没有一个对我有用。

urls.py:(特别是第三行)

(r'^resetpassword/passwordsent/$', 'django.contrib.auth.views.password_reset_done', name="reset_password"),
(r'^resetpassword/$', 'django.contrib.auth.views.password_reset', name="reset_password"),
(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)-(?P<token>,+)/$', 'django.contrib.auth.views.password_reset_confirm'),
(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),

password_reset_email.html

{% load url from future %}
{% autoescape off %}
Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'django.contrib.auth.views.password_reset_confirm' uidb64=uid token=token %}
{% endautoescape %}

一切似乎都正常,直到我提交电子邮件并收到以下错误:

Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb64': 'OQ', u'token': u'3n2-0fee9d3f98dad36e63d8'}' not found. 2 pattern(s) tried: ['/$reset/(?P<uidb64>[0-9A-Za-z_\\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 'reset/(?P<uidb64>[0-9A-Za-z_\\-]+)-(?P<token>,+)/$']

我正在使用 Django 1.6。 任何帮助深表感谢!谢谢!

【问题讨论】:

  • 你看过this suspiciously similar的问题吗?
  • 使用视图的名称或全名。
  • 是的,我有,我将我的 url conf 更改为完整路径,但它仍然没有为我工作。

标签: python django passwords reset


【解决方案1】:

您可以从异常中看到发生了什么,尽管它有点难以发现。如果你看看它尝试了哪些模式:

2 pattern(s) tried: ['/$reset/(?P<uidb64>[0-9A-Za-z_\\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 'reset/(?P<uidb64>[0-9A-Za-z_\\-]+)-(?P<token>,+)/$']

您应该注意到第一个模式通常应该匹配,因为它接受带有- 的标记。但是它的其余内容前面有一个流浪的$,所以实际上它无法匹配任何内容:

'/$reset/...'

您没有显示建立该模式的 urls.py 行 - 您引用的第三行只能匹配仅由逗号组成的标记:

(?P<token>,+)

因此,虽然我可以肯定地说您需要更正您的 urls.py,但我无法准确说明您需要在哪里进行更正。如果您打算匹配 urls.py 行,则应更新 token 组正则表达式以接受您的实际令牌值,并应弄清楚为什么另一个要完全匹配。也就是说,如果- 是作为令牌的一部分出现的有效字符,我认为您会发现整体上使用/ 作为uidb64 字段和令牌之间的分隔符会更容易,就像您的第一个正则表达式一样除了流浪的$

【讨论】:

    猜你喜欢
    • 2014-05-02
    • 2016-06-15
    • 2018-05-27
    • 2014-05-01
    • 2016-09-26
    • 1970-01-01
    • 2013-09-14
    • 2016-07-11
    相关资源
    最近更新 更多