我正在使用Django内置的重置密码视图和自定义模板。虽然它可以成功运行,但如果提交的电子邮件ID尚未在站点中注册,则不会显示错误消息。
我按照说明here帮助我达到这一点。
#urls.py
url(r'^users/password/reset/$',
'django.contrib.auth.views.password_reset',
{'post_reset_redirect' : '/users/password/reset/done/'},
name="reset_password"
),
url(r'^users/password/reset/done/$',
'django.contrib.auth.views.password_reset_done'
),
url(r'^users/password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
'django.contrib.auth.views.password_reset_confirm',
{'post_reset_redirect' : '/users/password/done/'}
),
url(r'^users/password/done/$',
'django.contrib.auth.views.password_reset_complete'
),
无论我提供什么电子邮件ID,Django总是将我重定向到 / users / password / reset / done / ,其中说:
We've e-mailed you instructions for setting your password to the e-mail address
you submitted.
You should be receiving it shortly.
这是误导性的,因为用户可能输入了错误的电子邮件地址,但仍然看到上面的页面。
如果未注册电子邮件地址,如何显示错误消息?
提前致谢。
答案 0 :(得分:3)
实现该方法的简便方法是使用django-allauth。无需任何额外设置即可工作,留言:电子邮件地址未分配给任何用户帐户。
我暂时没有使用原始用户,但如果你绝对需要,你可以尝试创建自己的视图并手动验证电子邮件是否在服务器中(如果是,你可以调用原始函数)。您可能需要扩展模板或表单以将操作重定向到您自己的视图。