1. 区分 字段类型 和 Widget
字段作用:验证输入,直接在模板中使用
Widget:渲染HTML表单控件和原始数据,定义以哪种表单控件显示
每个字段都有默认的 Widget
2. 使用示例
2.1. 使用默认 Widgets
first_name = forms.CharField(label='First Name', max_length=100)
2.2. 不使用默认 Widgets
comment = forms.CharField(widget=forms.Textarea)
2.3. 设置 Widgets 参数
# 日期字段类型 + 单选
BIRTH_YEAR_CHOICES = ('1980', '1981', '1982')
birth_year = forms.DateField(widget=forms.SelectDateWidget(years=BIRTH_YEAR_CHOICES))
# 多选
FAVORITE_COLORS_CHOICES = (
('blue', 'Blue'),
('green', 'Green'),
('black', 'Black'),
)
favorite_colors = forms.MultipleChoiceField(
required=False,
widget=forms.CheckboxSelectMultiple,
choices=FAVORITE_COLORS_CHOICES,
)
2.4. 添加 class,CSS样式
name = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
comment = forms.CharField(widget=forms.TextInput(attrs={'size': '40'}))
3. 控件类型
Widget 控件类型表
- 文字输入
- TextInput
- NumberInput
- EmailInput
- URLInput
- PasswordInput
- HiddenInput
- DateInput
- DateTimeInput
- TimeInput
- Textarea
- 选择框
- CheckboxInput
- Select
- NullBooleanSelect
- SelectMultiple
- RadioSelect
- CheckboxSelectMultiple
- 文件上传
- FileInput
- ClearableFileInput
- 其他
- MultipleHiddenInput
- SplitDateTimeWidget
- SplitHiddenDateTimeWidget
- SelectDateWidget