从未以django形式调用form_valid和form_invalid

时间:2015-04-16 18:48:04

标签: django forms validation login

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")。怎么了?

1 个答案:

答案 0 :(得分:4)

您将django.forms.Formdjango.views.generic.edit.FormView混为一谈。

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

Form课程,其中AuthenticationForm extends代替is_valid method