2014-05-10 3 views
5

양식 필드의 속성을 수정하고 싶습니다. 특히, 로그인 폼 :django-allauth 양식 필드 덮어 쓰기

(장고 - allauth LoginForm)

클래스 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"]) 

내가 덮어 쓰기하는 방법 (또는 대체) 장고 - allauth 양식 필드? 도움!

+0

수정하면 무엇을 의미합니까? 새 필드를 추가하거나 기존 필드를'password' 필드와 같이 수정 하시겠습니까? –

답변

0

ACCOUNT_SIGNUP_FORM_CLASS 설정 변수를 사용하여 가입 양식 클래스를 무시할 수 있다는 것을 알고 있지만 로그인 양식을 변경할 방법이 없다는 것을 알고 있습니다. 나는 여기에 내 자신의 비슷한 질문을했다.

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

을하고 그에 따라 YourLoginForm 쓰기 :

7

당신은 예를 들어, settings.pyACCOUNT_FORMS를 사용하여 기본 LoginForm을 덮어 쓸 수 있습니다.

# 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

로그인 양식, 양식 재설정을 위해 작동하지만 비밀번호 변경 양식 (예 : ACCOUNT_FORMS = { 'reset_password': 'XYZ'})에는 작동하지 않습니다. –

관련 문제