2015-04-16 4 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_valid и form_invalid никогда не называются. Однако всегда вызывается clean (я вижу сообщение «LoginForm: clean»). Что не так?form_valid и не form_invalid никогда не называли в форме Джанго

ответ

3

Вы вводите в заблуждение django.forms.Form с django.views.generic.edit.FormView.

Оба метода form_valid и form_invalid принадлежат Django's class-based generic view FormView.

Form класс, который AuthenticationFormextends, вместо этого имеет is_valid method.

+0

Вы правы! Я думаю, что сегодня переусердствовал ... Спасибо :). – rom

+0

Добро пожаловать! :) – Filly

+0

Просто спрашиваю, могу ли я использовать их оба? Один (чистый), чтобы сделать валидацию общей формы, а другой (is_valid) для выполнения каких-то других вещей? – jinchuika

Смежные вопросы