python - Django 重置密码未捕获无效的电子邮件 ID

标签 python django django-forms django-views

我正在使用 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/

相关文章:

django - 如何将 django ManyToManyField 转换为 Django-nonrel 字段?

python - 处理以不同方式创建的 super 用户的最佳方法是什么?

python - 带 DRF 的 Django 过滤器 - 在使用相同查找应用多个值时如何处理 'and'?

python - pyunit 测试失败,因为方法在传入 5 个参数时只接受 4 个参数

python - 将图像数组保存在文件中的最佳方法(Python)

python - 在 Python 中用任意值替换命名的捕获组

python - 类型错误 : Cart() takes no arguments

python - 解开数据框

python - modelform django 中多对多字段的过滤器选择

django - 必需的 bool 字段?