password_Reset_confirm上的NoReverseMatch

Hou*_*man 17 django

我有一个问题,让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'),
Run Code Online (Sandbox Code Playgroud)

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 %}
Run Code Online (Sandbox Code Playgroud)

但是在提交我的电子邮件以重置密码后,我收到以下错误消息:

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/
Run Code Online (Sandbox Code Playgroud)

更新2

我想到了.以防其他人有这个问题.您需要将您的域名设置为您的应用程序的站点:

在Admin或django控制台中:

>>> my_site = Site.objects.get(pk=1)
>>> my_site.domain = 'somedomain.com'
>>> my_site.name = 'Some Domain'
>>> my_site.save()
Run Code Online (Sandbox Code Playgroud)

另一个问题是,为什么在重置时可以收到两封​​电子邮件,因为您可以将多个用户名与同一个电子邮件地址相关联.它非常愚蠢.这是我必须解决的下一件事.

Shi*_* Su 11

要将网址传递给url模板标记,您可以name在网址中指定网址urls.py

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 
views.password_reset_confirm, name='password_reset_confirm'),
Run Code Online (Sandbox Code Playgroud)

然后你可以使用带有url名称的标记

{% url 'password_reset_confirm' uidb64=uid token=token %}
Run Code Online (Sandbox Code Playgroud)


Cés*_*sar 5

使用url模板标签时,您需要指定视图而不是 url 本身。'django.contrib.auth.views.password_reset_confirm'由于您在 URLConf 中使用,因此应该像这样使用它:

{% url 'django.contrib.auth.views.password_reset_confirm' ... %}
Run Code Online (Sandbox Code Playgroud)

有关模板标签的更多信息,url请参阅 Django 的内置模板标签和过滤器文档。