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_validform_invalid。但是 clean 总是被调用(我看到消息 "LoginForm: clean")。怎么了?

您将 django.forms.Formdjango.views.generic.edit.FormView 混淆了。

form_validform_invalid方法都属于Django的class-based generic view FormView

Formclass,AuthenticationFormextends, has a is_valid method代替。