form_valid 和 form_invalid 从未以 django 形式调用
form_valid and form_invalid never called in django form
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_valid
和 form_invalid
。但是 clean
总是被调用(我看到消息 "LoginForm: clean")。怎么了?
您将 django.forms.Form
与 django.views.generic.edit.FormView
混淆了。
form_valid
和form_invalid
方法都属于Django的class-based generic view FormView。
Form
class,AuthenticationForm
extends, has a is_valid
method代替。
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_valid
和 form_invalid
。但是 clean
总是被调用(我看到消息 "LoginForm: clean")。怎么了?
您将 django.forms.Form
与 django.views.generic.edit.FormView
混淆了。
form_valid
和form_invalid
方法都属于Django的class-based generic view FormView。
Form
class,AuthenticationForm
extends, has a is_valid
method代替。