0

尝试使用内置的 auth.views 和 auth.form 进行密码重置。

有以下内容forms.py

class CustomPasswordResetForm(PasswordResetForm):
    def clean_email(self):
        email = self.cleaned_data.get('email')
    if email and 'gmail.com' in email:
        raise forms.ValidationError(u'Unfortunately, we can not reset Gmail usernames')
    return email

以及以下内容urls.py

url(r'^passreset/$', auth_views.password_reset, {'template_name': 'registration/password_reset.html', 'password_reset_form': CustomPasswordResetForm}),

如果我输入类似 的电子邮件sample@gmail.com,它会正确抛出验证错误。但是,如果我输入非 gmail 电子邮件,它会验证其在超类中是否是正确的电子邮件地址,但它不会验证是否存在与该电子邮件关联的用户,而是返回:

AttributeError at /passreset/
'CustomPasswordResetForm' object has no attribute 'users_cache'

有任何想法吗?我不知道从哪里开始,而且谷歌搜索并没有真正出现。

4

1 回答 1

0

解决了这个问题。一旦我覆盖了 clean_email,我就忘记了调用超类中的原始方法。将第 3 行更改为以下内容可以解决问题。

email = super(CustomPasswordResetForm, self).clean_email()
于 2013-02-20T00:55:45.993 回答