Django密码重置视图中的ReverseMatch错误

时间:2013-03-08 03:13:56

标签: django

我一直在关注如何设置Django电子邮件重置视图的一些在线教程,但我仍然得到反向匹配错误:

Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{'uidb36': '2', 'token': '3fk-e9d14405e0aaf252475e'}' not found

我的网址设置如下:

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

我可以进入电子邮件地址输入页面,但是当我点击发送电子邮件时,它只会返回反向匹配错误。

任何人都可以帮助我吗?

感谢。

1 个答案:

答案 0 :(得分:0)

你有没有更新到Django 1.6或更高版本?

如果是这样,您只需将uidb36替换为uidb64即可。这适用于模板中的{% url ... %}调用,Python代码中的reverse()调用以及urls.py中的正则表达式。

从你的urls.py中挑选一个例子:

url(r'^password_reset/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', 
    {'post_reset_redirect' : '/user/password/done/'}),

请参阅Django 1.6 Release Notes