2014-05-10 8 views
5

Ich möchte Attribute eines Formularfelds ändern. Insbesondere wird das Login-Formular:Django-Allauth Formularfeld überschreiben

(django-allauth Loginform)

Klasse Loginform (forms.Form):

password = PasswordField(label=_("Password")) 
remember = forms.BooleanField(label=_("Remember Me"), 
           required=False) 

user = None 

def __init__(self, *args, **kwargs): 
    super(LoginForm, self).__init__(*args, **kwargs) 
    if app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.EMAIL: 
     login_widget = forms.TextInput(attrs={'type': 'email', 
               'placeholder': 
               _('E-mail address'), 
               'autofocus': 'autofocus'}) 
     login_field = forms.EmailField(label=_("E-mail"), 
             widget=login_widget) 
    elif app_settings.AUTHENTICATION_METHOD \ 
      == AuthenticationMethod.USERNAME: 
     login_widget = forms.TextInput(attrs={'placeholder': 
               _('Username'), 
               'autofocus': 'autofocus'}) 
     login_field = forms.CharField(label=_("Username"), 
             widget=login_widget, 
             max_length=30) 
    else: 
     assert app_settings.AUTHENTICATION_METHOD \ 
      == AuthenticationMethod.USERNAME_EMAIL 
     login_widget = forms.TextInput(attrs={'placeholder': 
               _('Username or e-mail'), 
               'autofocus': 'autofocus'}) 
     login_field = forms.CharField(label=pgettext("field label", 
                "Login"), 
             widget=login_widget) 
    self.fields["login"] = login_field 
    set_form_field_order(self, ["login", "password", "remember"]) 

Wie ich überschreiben (oder überschreiben) eine django-allauth Formularfeld? Hilfe!

+0

was meinst du mit ändern? Möchten Sie neue Felder hinzufügen oder die vorhandenen Felder wie 'password' ändern? –

Antwort

0

Ich weiß, dass Sie die Anmeldeformularklasse mit der ACCOUNT_SIGNUP_FORM_CLASS Einstellungsvariablen überschreiben können ... aber soweit ich weiß, gibt es keine Möglichkeit, das Anmeldeformular zu ändern. Ich habe meine eigene ähnliche Frage hier gestellt.

7

Sie können die Standardloginform überschreiben mit ACCOUNT_FORMS in Ihrem settings.py, zum Beispiel: ein YourLoginForm entsprechend

ACCOUNT_FORMS = {'login': 'yourapp.forms.YourLoginForm'} 

und schreiben.

# 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['login'].widget = forms.TextInput(attrs={'type': 'email', 'class': 'yourclass'}) 
     self.fields['password'].widget = forms.PasswordInput(attrs={'class': 'yourclass'}) 
+0

Funktioniert für Login-Formular, Formular zurücksetzen, funktioniert aber nicht für das Passwort-Änderungsformular (zB ACCOUNT_FORMS = {'reset_password': 'XYZ'} –