2015-04-16 24 views
0
from django.contrib.auth.forms import AuthenticationForm 

class LoginForm(AuthenticationForm): 


    def clean(self): 
     logger.debug("LoginForm: clean") 
     cleaned_data = self.cleaned_data 
     mail = cleaned_data.get("username") 
     pwd = cleaned_data.get("password") 
     user = authenticate(username=mail, password=pwd) 

     ... 

     cleaned_data = super(LoginForm, self).clean() 
     return cleaned_data 


    def form_invalid(self, form): 
     logger.debug("LoginForm: form_invalid") 
     return super(LoginForm, self).form_invalid(form) 

    def form_valid(self, form): 
     logger.debug("LoginForm: form_valid") 
     return super(LoginForm, self).form_valid(form) 

方法form_validform_invalid永遠不會被調用。但總是調用clean(我看到消息「LoginForm:clean」)。怎麼了?form_valid和form_invalid永遠不會以django的形式調用

回答

3

你很困惑django.forms.Formdjango.views.generic.edit.FormView

form_validform_invalid方法都屬於Django的class-based generic view FormView

Form類,其中AuthenticationFormextends,有一個is_valid method而不是。

+0

你說得對!我想我今天勞累過度了......謝謝你:)。 – rom

+0

不客氣! :) – Filly

+0

只是問,我可以使用它們兩個嗎?一(乾淨)做一個通用的表單驗證,另一個(is_valid)做一些其他的東西? – jinchuika

相關問題