django auth密码重置 - NoReverseMatch

时间:2013-09-17 09:15:39

标签: django authentication passwords reset

我正在尝试重置密码才能正常工作。我使用了this tutorial

Django Version 1.5.1

当我输入电子邮件地址并点击“重置密码”按钮时,我收到一条错误消息:

Exception Type: NoReverseMatch
Exception Value: Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb36': u'q', u'token': u'3ky-999ef6e52ef0743cdb2a'}' not found.

原因似乎是:

{{ protocol }}://{{ domain }}{% url 'django.contrib.auth.views.password_reset_confirm' uidb36=uid token=token %}

my urls.py:

url(r'^user/password/reset/$', 'django.contrib.auth.views.password_reset', {'post_reset_redirect' : 'user/password/reset/done/','template_name': 'main/registration/password_reset_form.html'}, name="password_reset"),
url(r'^user/password/reset/done/$', 'django.contrib.auth.views.password_reset_done', {'template_name': 'main/registration/password_reset_done.html'}),
url(r'^user/password/reset/(?P<uidb36>[0-9A-Za-z]+)/(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', {'template_name': 'main/registration/password_reset_confirm.html', 'post_reset_redirect' : 'user/password/done/'}),
url(r'^user/password/done/$', 'django.contrib.auth.views.password_reset_complete',{'template_name': 'main/registration/password_reset_complete.html'})

我现在正在尝试几个小时,也许有人可以给我一个提示。非常感谢提前。

3 个答案:

答案 0 :(得分:1)

Namespaces用于区分不同应用程序之间的相同URL。因此,使用namespace始终是一种非常好的做法。例如,如果在项目URL中将名称空间指定为:

url(r'^courses/', include('courses.urls', namespace="courses")),

你这样做:

<a href="{% url 'courses:lecturedetail' i.id %}">{{ i.title }}</a>

此处courses是命名空间。

答案 1 :(得分:0)

确定这些url-lines,其中包含在根url-conf中的命名空间url.conf的一部分......好了,删除命名空间选项现在解决了它。

答案 2 :(得分:0)

您应该在urls.pyurl(r'^accounts/', include('django.contrib.auth.urls')),中加入以下一行,因为django-regisration会调用django.contrib.auth中的某些功能。

我已经为django-registration创建了一个完整的演示,请参阅https://github.com/xiaohanyu/django-registration-demo