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'

何か案は?どこから始めたらいいのかわからず、Google 検索でもあまりヒットしませんでした。

4

1 に答える 1

0

問題を解決しました。clean_email をオーバーライドした後、スーパー クラスで元のメソッドを呼び出すのを忘れていました。3 行目を以下のように変更すると、問題が解決します。

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