【发布时间】:2012-06-23 23:55:12
【问题描述】:
我无法让 password_Reset_confirm 位正常工作。
网址:
(r'^password_reset/$', 'django.contrib.auth.views.password_reset'),
(r'^password_reset_done/$', 'django.contrib.auth.views.password_reset_done'),
(r'^password_reset_confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),
password_reset_email.html,其中包括:
{% load url from future %}
Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %}
但是在提交我的重置密码的电子邮件后,我收到以下错误消息:
NoReverseMatch at /password_reset/ 反向 'password_reset_confirm' 带有参数 '()' 和关键字参数 '{'uidb36': '1', 'token': '38d-b5ec0b2a2321f522f954'}' 未找到。
我想既然这是使用内置视图,我就不必关心其他任何事情了?
感谢您的建议,
更新:
使用完整路径后,它似乎可以工作。但是它会发送两封电子邮件:每封都有不同的链接。这是为什么?我在哪里设置 {{ domain }}?谢谢
Follow the link below:
http://example.com/password_reset_confirm/1-38d-b5ec0b2a2321f522f954/
Follow the link below:
http://example.com/password_reset_confirm/2-38d-18482e1f129c84b9c2bc/
更新 2
我想通了。以防万一其他人有这个问题。您需要将您的域名设置为您的应用程序的站点:
在管理员或 django 控制台中:
>>> my_site = Site.objects.get(pk=1)
>>> my_site.domain = 'somedomain.com'
>>> my_site.name = 'Some Domain'
>>> my_site.save()
重置时可能会收到两封电子邮件的另一个问题是,您可以将多个用户名与同一个电子邮件地址关联。它很傻。这是我接下来要解决的问题。
【问题讨论】:
-
我认为您应该指定视图的名称而不是 url 的名称。类似
{% url 'django.contrib.auth.views.password_reset_confirm' ... %} -
是的,这已经奏效了。很奇怪,因为我是从 Django 文档中复制的。现在还有两个问题,请查看更新的问题。谢谢
-
Cesar,我修复了其他两个问题并更新了问题。如果您希望将您的评论作为回复,我会将其作为答案。谢谢
标签: django