我正在使用 Django 的内置重置密码 View 和自定义模板。虽然它工作成功,但如果提交的电子邮件 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.
这具有误导性,因为用户可能输入了错误的电子邮件地址,但仍然看到上述页面。
如果电子邮件地址未注册,如何显示错误消息?
提前致谢。
最佳答案
实现这一点的简单方法是使用 django-allauth 。无需任何额外设置即可工作,留下消息:电子邮件地址未分配给任何用户帐户。
我已经有一段时间没有使用原始用户了,但是如果您绝对需要,您可以尝试创建自己的 View 并手动验证电子邮件是否在服务器中(如果是,您可以调用原始函数)。您可能需要扩展模板或表单以将操作重定向到您自己的 View 。
关于python - Django 重置密码未捕获无效的电子邮件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145145/