今日学习目标
- 完结forms组件的学习,进一步学习cookie与session
文章目录
学习内容
- forms组件钩子函数
- forms组件字段类型及参数
- ModelForm简介
- cookie与session简介
一、forms组件钩子函数
当你需要对某一个字段数据进行额外的一系列校验,可以考虑使用钩子函数
钩子函数是forms组件暴露给用户,可以自定义的校验规则
必须通过字段本身之前的校验规则,才会进行钩子函数的校验。
用法:在自定义的form类中书写方法即可
局部钩子
针对单个字段的,使用局部钩子
# 局部钩子(针对某一个字段做额外的校验) 校验用户名中不能包含666 一旦包含 提示
def clean_username(self):
username = self.cleaned_data.get('username')
if '666' in username:
# 给username字段下面提示错误信息
self.add_error('username','jason')
return username
全局钩子
针对多个字段的校验,使用全局钩子,eg:校验两次密码是否一致
def clean(self):
password = self.cleaned_data.get('password')
confirm_password = self.cleaned_data.get('confirm_password')
if not password == confirm_password:
self.add_error('confirm_password','两次密码不一致')
return self.cleaned_data
二、forms组件字段类型及参数
forms组件字段类型,多注意:CharField、IntegerField、ChoiceField、EmailField、 DateField、TimeField、DateTimeField、FileField(文件上传)、ImageField(图像上传)
各个参数的说明:
-
min_value 最小值
-
max_value 最大值
-
required: 控制该字段是否必填
-
invalid: 格式不合法
-
max_length: 限制要校验字段的最大长度
-
min_length: 限制要校验字段的最小长度
-
error_messages: 控制错误信息的值, 比如max_length校验失败时, 在errors字典中 ErrorDict : {“校验错误的字段”:[“错误信息”,]}会有一个’‘max_length’':[‘太长’] 这样一个信息,value的值是一个列表,是因为在校验的时候可以设置多个校验限制
-
validators 正则校验器
from django.core.validators import RegexValidator
phone = forms.CharField(
validators=[
RegexValidator(r'^[0-9]+$', '请输入数字'),
RegexValidator(r'^159[0-9]+$', '数字必须以159开头')],
)
- choices
选择类型的标签内部对应关系
可以直接编写 也可以从数据库中获取
hobby = forms.MultipleChoiceField(
choices=(
(1, "篮球"),
(2, "足球"),
(3, "双色球"),
)
)
def __init__(self, *args, **kwargs):
super