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")。怎么了?
答案 0 :(得分:4)
您将django.forms.Form
与django.views.generic.edit.FormView
混为一谈。
form_valid
和form_invalid
方法都属于Django' class-based generic view FormView。
Form
课程,其中AuthenticationForm
extends代替is_valid
method。