Overriding the login form in Django allauth with ACCOUNT_FORMS

I already overloaded the registration form with the simple ACCOUNT_SIGNUP_FORM_CLASS settings variable, but to override the login form you need to use ACCOUNT_FORMS = {'login': 'yourapp.forms.LoginForm'} . I have the form I want and it renders perfectly with crispy forms and Bootstrap3:

 class LoginForm(forms.Form): login = forms.EmailField(required = True) password = forms.CharField(widget = forms.PasswordInput, required = True) helper = FormHelper() helper.form_show_labels = False helper.layout = Layout( Field('login', placeholder = 'Email address'), Field('password', placeholder = 'Password'), FormActions( Submit('submit', 'Log me in to Cornell Forum', css_class = 'btn-primary') ), ) 

When I submit the form, I get AttributeError at /account/login/ - 'LoginForm' object has no attribute 'login' . What's going on here? The source of the original allauth login form is here: https://github.com/pennersr/django-allauth/blob/master/allauth/account/forms.py

+5
source share
1 answer

From my point of view, you can overwrite the default LoginForm with ACCOUNT_FORMS , but you need to provide a class containing all the methods provided in the source class. There is no login method in your class.

I would set ACCOUNT_FORMS = {'login': 'yourapp.forms.YourLoginForm'} in your settings.py file where YourLoginForm inherited from the source class.

 # yourapp/forms.py from allauth.account.forms import LoginForm class YourLoginForm(LoginForm): def __init__(self, *args, **kwargs): super(YourLoginForm, self).__init__(*args, **kwargs) self.fields['password'].widget = forms.PasswordInput() # You don't want the `remember` field? if 'remember' in self.fields.keys(): del self.fields['remember'] helper = FormHelper() helper.form_show_labels = False helper.layout = Layout( Field('login', placeholder = 'Email address'), Field('password', placeholder = 'Password'), FormActions( Submit('submit', 'Log me in to Cornell Forum', css_class = 'btn-primary') ), ) self.helper = helper 
+7
source

Source: https://habr.com/ru/post/1201531/


All Articles