Django: 内置视图和表单抛出“对象没有属性‘users_cache’”异常

0 投票
1 回答
1599 浏览
提问于 2025-04-17 16:27

我正在尝试使用内置的 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'

有没有什么想法?我不知道该从哪里开始,而且在谷歌搜索也没找到太多信息。

1 个回答

0

问题解决了。我在重写了clean_email方法之后,忘记在父类中调用原来的方法了。把第三行改成下面这样就解决了这个问题。

email = super(CustomPasswordResetForm, self).clean_email()

撰写回答