可以使用 Django 标签的“auto_id”选项来控制表单中每个表单元素的名称和 id。将 auto_id 设置为 False 可以禁用自动 Id 生成,这样可以自己定义表单元素的 id。
示例代码:
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(label='Your name', max_length=100)
email = forms.EmailField(label='Your email')
message = forms.CharField(widget=forms.Textarea)
def __init__(self, *args, **kwargs):
super(ContactForm, self).__init__(*args, **kwargs)
self.fields['name'].widget.attrs['class'] = 'form-control'
self.fields['email'].widget.attrs['class'] = 'form-control'
self.fields['message'].widget.attrs['class'] = 'form-control'
self.fields['name'].widget.attrs['placeholder'] = 'Your name'
self.fields['email'].widget.attrs['placeholder'] = 'Your email'
self.fields['message'].widget.attrs['placeholder'] = 'Your message'
self.fields['name'].label = ''
self.fields['email'].label = ''
self.fields['message'].label = ''
self.fields['name'].widget.attrs['id'] = 'contact-name'
self.fields['email'].widget.attrs['id'] = 'contact-email'
self.fields['message'].widget.attrs['id'] = 'contact-message'
class Meta:
widgets = {
'name': forms.TextInput(attrs={'placeholder': 'Your Name'}),
'email': forms.TextInput(attrs={'placeholder': 'Your Email'}),
'message': forms.TextInput(attrs={'placeholder': 'Message...'}),
}
labels = {
'name': '',
'email': '',
'message': '',
}
fields = ['name', 'email', 'message']
在这个例子中,我们定义了一个名为“ContactForm”的 Django 表单类,并重载了 init 方法来为表单元素添加自定义属性(class,placeholder,和 id)。
对于每个表单元素,我们可以使用 fields 属性来定义要呈现的表单元