bgmaster
bgmaster

Reputation: 2333

Django-crispy-forms AttributeError when using built in AuthenticationForm

I'm trying to use django-crispy-forms to display the built-in AuthenticationForm with the login view in django. I'm having issues subclassing AuthenticationForm - I'm getting an AttributeError. The error says 'WSGIrequest' object has no attribute 'get'. Here is my form:

class LoginForm(AuthenticationForm):
    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Field('username', placeholder="username"),
            Field('password', placeholder="password"),)
        super(AuthenticationForm, self).__init__(*args, **kwargs)

I think this error has to do with the login view being called via get from a redirect (I'm using the @login_required decorator). Does anyone have any ideas on how to subclass built in forms with django-crispy-forms and avoid this error?

Upvotes: 3

Views: 1638

Answers (1)

maraujop
maraujop

Reputation: 4604

It looks like you've got an error in your form:

class LoginForm(AuthenticationForm):
    def __init__(self, *args, **kwargs):
        super(LoginForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Field('username', placeholder="username"),
            Field('password', placeholder="password"),
        )

You are calling super, passing parent class AuthenticationForm not LoginForm.

Upvotes: 7

Related Questions