2013-02-20 39 views
0

試圖使用內置的auth.views和auth.form來重置密碼。Django:內置視圖和表單拋出「對象沒有屬性」users_cache'「

有在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}), 

如果鍵入像[email protected]的電子郵件時,正確地拋出驗證錯誤。但是,如果我輸入一個非Gmail電子郵件,它驗證其是否在超正確的電子郵件地址,但它不驗證是否有與電子郵件相關的用戶,而是返回:

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

有任何想法嗎?我不確定從哪裏開始,而谷歌搜索並沒有真正發揮多大作用。

回答

0

解決了這個問題。一旦我重寫了clean_email,我忘了在超類中調用原始方法。將第三行更改爲以下可解決問題。

email = super(CustomPasswordResetForm, self).clean_email() 
相關問題