python - Django:密码重置 ReverseMatch 错误

标签 python django passwords reset

我无法让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。 任何帮助深表感谢!谢谢!

最佳答案

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

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 组正则表达式以接受您的实际标记值,并应找出为什么另一个会出现完全匹配。也就是说,如果 - 是作为 token 一部分出现的有效字符,我认为您会发现总体上更容易使用 / 作为 之间的分隔符uidb64 字段和您的 token ,就像您的第一个正则表达式一样,除了杂散的 $ 之外。

关于python - Django:密码重置 ReverseMatch 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319398/

相关文章:

security - 临时密码安全 - 以纯文本形式存储

python - "".join(reversed(val)) vs val[::-1]...哪个是 pythonic?

python - 如何按整数倍对距离较近的项目进行分组

python - Django REST框架: nested serializer not properly validating data

python - JSON 序列化器在 Django 中不起作用

python - Django 和 SSL 服务器

mysql - GRANT 中的密码与现有用户名的密码相同

algorithm - Aix:如何在AIX/etc/security/passwd上生成有效的sha1/sha256/sha512密码哈希?

python - 在 SecondaryAxis 上绘制网格线 - Matplotlib

python - 我怎样才能强制子类有 __slots__?