我如何覆盖 allauth 的 SignupForm class 以便我可以删除电子邮件字段的标签?
How can I override allauth's SignupForm class so that I can remove the emailfield's label?
Screenshot of the rendered form
我已经完成了所有必要的导入,代码没问题,但即使将其设置为 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)
这是allauth/accounts/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']...
我认为 "if email_required" 是问题所在。任何帮助证明我做错了什么的帮助将不胜感激。谢谢
我终于让它按照我想要的方式渲染了。我用过:
self.helper = FormHelper()
self.helper.form_show_labels = False
和一个 {% crispy form %} 标签。
Screenshot of the rendered form
我已经完成了所有必要的导入,代码没问题,但即使将其设置为 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)
这是allauth/accounts/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']...
我认为 "if email_required" 是问题所在。任何帮助证明我做错了什么的帮助将不胜感激。谢谢
我终于让它按照我想要的方式渲染了。我用过:
self.helper = FormHelper()
self.helper.form_show_labels = False
和一个 {% crispy form %} 标签。