为什么我不能实现Django的忘记密码功能?

时间:2011-01-28 07:35:44

标签: python django

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

我已经正确地做到了这一点:

(r'^password/reset/?$',password_reset ),
(r'^password/reset/done/?$',password_reset_done ),
(r'^password/reset/confirm/?$',password_reset_confirm ),
(r'^password/reset/complete/?$',password_reset_complete),

3 个答案:

答案 0 :(得分:11)

Django正在传递论据;你需要接受它们并将它们传递给重置表格。

要非常清楚错误消息的内容,它需要一个视图的URL,'django.contrib.auth.views.password_reset_confirm',并且url 必须接受参数提供,在这种情况下'uidb36'和'令牌'。如果没有,它会一直看着它直到它到达你的网址的末尾,然后抛出这个错误。

以下内容应该有效:

(r'^password/reset/confirm/(?P<uidb36>\d+)/(?P<token>[\d\w-]+)$',password_reset_confirm ),

就个人而言,我更喜欢那些是通过GET而不是URL传递的,但无论如何:)。

答案 1 :(得分:1)

你正在传递它的论点。这些urlconf条目都不带参数。从反面删除它们或将它们添加到urlconf。

答案 2 :(得分:0)

您可能在模板文件中有这样的模板标签

{% url django.contrib.auth.views.password_reset_confirm %}

尝试搜索类似的东西 shell示例:

find . -iname "*.html" -exec grep -iH "django.contrib.auth.views.password_reset_confirm" {} \;

如果找到一些,那么检查没有参数被“传递”