Django Form的三个关键要素:
- 模板类 -- 提供生成前台表单的字段、并根据这些字段来验证用户的表单数据
from django import forms class LoginForm(forms.Form): username = forms.CharField(min_length=3, error_messages={"required": '用户名不能为空', 'min_length': '用户名长度不能小于3'}) email = forms.EmailField(error_messages={"required": '邮箱不能为空', 'invalid': '邮箱格式错误'}) obj = LoginForm(request.POST)
- 字段 -- 模板类中定义的具体字段类型,用于生成前台表单的html标签,并实现对用户表单数据的验证
username = forms.CharField() email = forms.EmailField()
CharField是forms下的一个类,CharField这个类内部封装了验证的规则,当调用obj.is_valid()时,会将模板中的字段遍历一遍,逐个进行数据校验,如果都正确,则返回True
CharField类实际是写在forms目录下的fields.py文件中,所以在具体使用的时候可以这样引用:from django.forms import fields
- 插件 -- 实现对字段的功能扩展
- 自定义CharField字段的类型
from django import forms from django.forms import fields from django.forms import widgets class DetailForm(forms.Form): #通过插件widgets,将CharField默认的TextInput字段类型变为PasswordInput字段类型 pwd = fields.CharField(widget=widgets.PasswordInput)
-
- 自定义字段的属性
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> input.intro {color:blue;} </style> </head> <body> {{ obj.name }} </body> </html>
from django import forms from django.forms import fields from django.forms import widgets class DetailForm(forms.Form): #通过attrs参数,添加样式、placeholder等 name = fields.CharField(widget=widgets.TextInput(attrs={'placeholder': '用户名', 'class': 'intro' }))
前端页面展示效果: