Widgets(部件)
一个 widget 对应一个 HTML form 输入元素,有两个功能,一是用于 HTML 渲染,二是 从 GET/POST 字典抽出数据。
Field类表现* 校验逻辑* ,而部件表现* 显示逻辑* 。
一. 如何为form类指定部件
若不为form的属性指定部件时,使用默认的, Built-in Field classes 。然而,若想指定不同的部件时,只需要让 widget 作为参数即可
from django import forms class CommentForm(forms.Form): name = forms.CharField() url = forms.URLField() comment = forms.CharField(widget=forms.Textarea)这里的 comment 会变成 Textarea,而不是 CharField
二. 如何给部件指定参数
widgets 具有可选的参数,可以在给 form field 定义 widget 时设置。如下所示, years 属性被指定为 SelectDateWidget 的参数。
from django import forms from django.forms.extras.widgets import SelectDateWidget BIRTH_YEAR_CHOICES = ('1980', '1981', '1982') FAVORITE_COLORS_CHOICES = (('blue', 'Blue'), ('green', 'Green'), ('black', 'Black')) class SimpleForm(forms.Form): birth_year = forms.DateField(<