django 添加占位符文本到表单字段
django add placeholder text to form field
在 Django 中,我有以下代码在 HTML 页面上创建用户名和密码表单:
<div class="control-group">
{{ form.username }}
</div>
<div class="control-group">
{{ form.password }}
</div>
我想在字段中添加 "Username" 和 "Password" 占位符文本,然后当用户单击该字段时该词消失。实现此目标的最佳方法是什么?
希望您的项目中确实有一个 forms.py 文件。创建表单时,您可以使用以下内容为您的字段设置占位符:
username = forms.CharField(label='username',
widget=forms.TextInput(attrs={'placeholder': 'username'}))
如果您的项目中有 ModelForm,您可以实现为:
class MyForm(forms.ModelForm):
class Meta:
model = User
widgets = {
'username': forms.TextInput(attrs={'placeholder': 'username'}),
..........
}
您必须使用 placeholder 属性
class LoginForm(forms.Form):
username = forms.CharField(label='username')
password = forms.CharField(label='password')
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
self.fields['username'].widget.attrs['placeholder'] = 'username'
self.fields['password '].widget.attrs['placeholder'] = 'password'
或
class LoginForm(forms.Form):
username = forms.CharField(label='username',widget=forms.TextInput(attrs={'placeholder':'username'}))
password = forms.CharField(label='password',widget=forms.PasswordInput(attrs={'placeholder':'password'}))
如果它可能对某人有帮助,我想使用模型的 help_text
属性 作为占位符。这是我能找到的最简单的方法,基于 aziminia 的回答:
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for _, value in self.fields.items():
value.widget.attrs['placeholder'] = value.help_text
class Meta:
model = models.MyModel
fields = (...)
如果您想将 字段名称 作为占位符,您可以使用以下代码:
class LoginForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
for k,v in self.fields.items():
v.widget.attrs['placeholder'] = k.capitalize()
其他请参考。
在 Django 中,我有以下代码在 HTML 页面上创建用户名和密码表单:
<div class="control-group">
{{ form.username }}
</div>
<div class="control-group">
{{ form.password }}
</div>
我想在字段中添加 "Username" 和 "Password" 占位符文本,然后当用户单击该字段时该词消失。实现此目标的最佳方法是什么?
希望您的项目中确实有一个 forms.py 文件。创建表单时,您可以使用以下内容为您的字段设置占位符:
username = forms.CharField(label='username',
widget=forms.TextInput(attrs={'placeholder': 'username'}))
如果您的项目中有 ModelForm,您可以实现为:
class MyForm(forms.ModelForm):
class Meta:
model = User
widgets = {
'username': forms.TextInput(attrs={'placeholder': 'username'}),
..........
}
您必须使用 placeholder 属性
class LoginForm(forms.Form):
username = forms.CharField(label='username')
password = forms.CharField(label='password')
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
self.fields['username'].widget.attrs['placeholder'] = 'username'
self.fields['password '].widget.attrs['placeholder'] = 'password'
或
class LoginForm(forms.Form):
username = forms.CharField(label='username',widget=forms.TextInput(attrs={'placeholder':'username'}))
password = forms.CharField(label='password',widget=forms.PasswordInput(attrs={'placeholder':'password'}))
如果它可能对某人有帮助,我想使用模型的 help_text
属性 作为占位符。这是我能找到的最简单的方法,基于 aziminia 的回答:
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for _, value in self.fields.items():
value.widget.attrs['placeholder'] = value.help_text
class Meta:
model = models.MyModel
fields = (...)
如果您想将 字段名称 作为占位符,您可以使用以下代码:
class LoginForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
for k,v in self.fields.items():
v.widget.attrs['placeholder'] = k.capitalize()
其他请参考