Django重置密码不捕获无效电子邮件ID

问题描述:

我正在使用Django的内置重置密码视图与自定义模板。虽然它可以成功运行,但如果提交的电子邮件ID尚未在网站中注册,则它不会显示错误消息。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的总是重定向我/用户/密码/ RESET /做/它说:

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。没有任何额外的设置,留下消息:电子邮件地址未分配给任何用户帐户。

我在一段时间内没有与原始用户一起工作,但如果您绝对需要您可以尝试创建自己的视图并手动验证电子邮件是否位于服务器中(如果是可以调用原始函数) 。您可能需要扩展模板或表单以将操作重定向到您自己的视图。

+0

哦..我已经在使用django-allauth进行Facebook登录。我不知道他们也提供了重置密码功能。如何连接网址以使用django-allauth?他们没有很好的文档。非常感谢您的帮助:) – Amit 2014-10-01 15:54:48

+1

尝试访问http:// localhost:8000/accounts/password/reset /(对于localhost) – cdvv7788 2014-10-01 15:57:56

+1

要更改模板,只需覆盖模板/帐户/目录中需要的任何内容(在这种情况下与密码重置有关的那些):https://github.com/pennersr/django-allauth/tree/master/allauth/templates/account – cdvv7788 2014-10-01 16:01:25