如何在 Django 中删除 EmailField 上的占位符?
Posted
技术标签:
【中文标题】如何在 Django 中删除 EmailField 上的占位符?【英文标题】:How do I remove a placeholder on an EmailField in Django? 【发布时间】:2016-02-12 13:12:39 【问题描述】:我正在使用 django-allauth 并创建了一个继承自 SignupForm 的自定义注册表单。如何从电子邮件字段中删除默认占位符?我不想要占位符。
from allauth.account.forms import SignupForm
class UserSignUpForm(SignupForm):
first_name = forms.CharField(max_length=155)
last_name = forms.CharField(max_length=155)
mobile = forms.CharField(max_length=20)
def __init__(self, *args, **kwargs):
super(UserSignUpForm, self).__init__(*args, **kwargs)
del self.fields['password1']
del self.fields['password2']
self.fields['first_name'].widget.attrs.update(
'class': 'required form-control',
)
self.fields['last_name'].widget.attrs.update(
'class': 'required form-control',
)
self.fields['email'].widget.attrs.update(
'class': 'required email form-control',
)
self.fields['mobile'].widget.attrs.update(
'class': 'required form-control',
)
def custom_signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.mobile_number = self.cleaned_data['mobile']
user.save()
【问题讨论】:
placeholder
和class
一样是一个小部件属性,您可以将其从 attrs 字典中删除。
你让它工作了吗?您是如何实现自定义 SignupClass 的?如果我将其放入设置中: ACCOUNT_SIGNUP_FORM_CLASS = "accounts.forms.CustomSignUpForm" 我收到一条错误消息“无法导入名称'SignupForm'”
【参考方案1】:
placeholder
被设置为 in the code 作为小部件的 attrs
字典中的键。
email = forms.EmailField(widget=forms.TextInput(
attrs='type': 'email',
'placeholder': _('E-mail address')))
因此,您可以简单地在表单的 __init__
方法中删除该键。
def __init__(self, *args, **kwargs):
super(UserSignUpForm, self).__init__(*args, **kwargs)
del self.fields['email'].widget.attrs['placeholder']
【讨论】:
以上是关于如何在 Django 中删除 EmailField 上的占位符?的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何在 Django 表单中多次包含相同的字段?