内置验证
本课属于 Coddy Django 学习旅程的“表单”单元。第 9 课,共 20 课。
活动需要填写说明和名额数量。每个表单字段都会检查相应类型的值,其参数还可以添加规则。你已经见过两条规则:每个字段都是必填的,而 max_length=100 会拒绝过长的标题。
IntegerField上的min_value:拒绝较小的数字。- 任意字段上的
required=False:可以留空。
控件决定字段的呈现方式:widget=forms.Textarea 会显示一个较大的文本框。下面是一个桌游预订表单:
class TableForm(forms.Form):
players = forms.IntegerField(min_value=2)
wishes = forms.CharField(widget=forms.Textarea, max_length=500)
phone = forms.CharField(required=False)可选文本字段留空时,cleaned_data 中的值是 "";可选数字字段留空时,值是 None。模板中的循环无需修改,就能显示新增字段。
挑战
简单活动现在有了描述和可容纳人数。
- 在
events/forms.py中,将description添加到EventForm:使用大文本框输入,可以留空。添加capacity:一个至少为 1 的整数。 - 在
new_event中,将这两项都保存到活动中。
添加一个可容纳 25 人且没有描述的活动:活动页面会显示可容纳 25 人。
亲手试试
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
表单中的所有课
自己练习: Django 在线编辑器