注明
本笔记主要参考《Django应用开发实战》《Django企业开发实战》,这两本书前者详细,后者精炼。学习之后真的是感觉自己进步了很多。值得一读,如果你遇到了值得一读的书籍,欢迎推荐给我,大家共同进步。
前言
网页表单是web开发的一项基本功能,Django的表单可以由Form类实现,主要分为两种:django.forms.Form和django.forms.ModelForm。前者是一个基础的表单功能,后者是在前者的基础上结合所生成的。
初识表单
传统的表单都是在模板文件中用HTML编写的,在模板文件中通过HTML来编写是一种较为简单的实现方式,但是不利于日后的维护和更新。为了简化表单的实现过程和提高表单的灵活性,Django提供了完善的表单功能。
Forms介绍
在对应的app下创建form.py
from django import forms
from django.forms import widgets
class LoginForm(forms.Form):
username = forms.CharField(min_length=8,label="用户名",
initial="张三",error_messages={
"required": "不能为空",
"invalid": "格式错误","min_length": "用户名最短8位"})
pwd = forms.CharField(min_length=6,label="密码",widget=forms.widgets.PasswordInput(attrs={
'class': 'c1'}, render_value=True)
# 这个密码字段和其他字段不一样,默认在前端输入数据错误的时候,点击提交之后,默认是不保存的原来数据的,但是可以通过这个render_value=True让这个字段在前端保留用户输入的数据
)
gender = forms.ChoiceField(choices=((1, "男"), (2, "女"), (3, "保密")),label="性别",initial=3,
widget=forms.widgets.RadioSelect())
hobby = forms.ChoiceField( # 注意,单选框用的是ChoiceField,并且里面的插件是Select,不然验证的时候会报错, Select a valid choice的错误。
choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
label="爱好",
initial=3,
widget=forms.widgets.Select()
)
hobby1 = forms.MultipleChoiceField(
# 多选框的时候用MultipleChoiceField,并且里面的插件用的是SelectMultiple,不然验证的时候会报错。
choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
label="爱好1",
initial=[1, 3],
widget=forms.widgets.SelectMultiple()
)
keep = forms.ChoiceField(
label="是否记住密码",
initial="checked",
widget=for