2016-08-05 6 views
0

Screenshot of the rendered formallauthのSignupFormクラスをオーバーライドすると、電子メールフィールドのラベルを削除できますか?

私は必要なインポートをすべて行っていますが、コードは問題ありませんが、電子メールフィールドのラベルはfalseに設定しても表示されます。

class SignupForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     super(SignupForm, self).__init__(*args, **kwargs) 
     self.fields['username'].label = False 
     self.fields['password1'].label = False 
     self.fields['password2'].label = False 
     self.fields['email'].label = False 

    def signup(self, request, user): 
     user.username = self.cleaned_data['username'] 
     user.email = self.cleaned_data['email'] 
     user.password = self.cleaned_data['password'] 
     user.save(commit=False) 

これは、私が問題に "場合email_required" と考えていforms.py/

class BaseSignupForm(_base_signup_form_class()): 
    username = forms.CharField(label=_("Username"), 
          min_length=app_settings.USERNAME_MIN_LENGTH, 
          widget=forms.TextInput(
           attrs={'placeholder': 
             _('Username'), 
             'autofocus': 'autofocus'})) 
    email = forms.EmailField(widget=forms.TextInput(
     attrs={'type': 'email', 
      'placeholder': _('E-mail address')})) 

    def __init__(self, *args, **kwargs): 
     email_required = kwargs.pop('email_required', 
           app_settings.EMAIL_REQUIRED) 
     self.username_required = kwargs.pop('username_required', 
             app_settings.USERNAME_REQUIRED) 
     super(BaseSignupForm, self).__init__(*args, **kwargs) 
     username_field = self.fields['username'] 
     username_field.max_length = get_username_max_length() 
     username_field.validators.append(
      validators.MaxLengthValidator(username_field.max_length)) 

     # field order may contain additional fields from our base class, 
     # so take proper care when reordering... 
     field_order = ['email', 'username'] 
     merged_field_order = list(self.fields.keys()) 
     if email_required: 
      self.fields["email"].label = ugettext("E-mail") 
      self.fields["email"].required = True 
     else: 
      self.fields["email"].label = ugettext("E-mail (optional)") 
      self.fields["email"].required = False 
      self.fields["email"].widget.is_required = False 
      if self.username_required: 
       field_order = ['username', 'email']... 

allauth /アカウントです。私が間違っていることを示す助けに感謝します。ありがとう

答えて

0

私はようやくレンダリングしました。私は、

self.helper = FormHelper() 
    self.helper.form_show_labels = False 

と{%crispy form%}タグを使用しました。

+0

こんにちは、Django-Crispy-Formsを使用しようとしましたが、エラーメッセージが表示されません(必須フィールドなど)。あなたは同じ問題に直面しましたか? – zan

+0

こんにちは、あなたはallauthを使用していますか?そうでない場合、crispy forms 'form_show_labelsはあなたのエラーメッセージを隠すべきではありません。 –

+0

はい、私はここでやっているようなラベルを削除するためにクリスピーフォームを使用しています。ラベルは削除されますが、エラーメッセージは機能しません。私が間違ってやっているのかどうか分からない。 mycode [ここ](http://stackoverflow.com/questions/39931540/validation-error-not-showing-on-form)のクイックチェックを手伝ってもらえますか? Thks。 – zan

関連する問題