字段校验
字段类 校验操作 错误信息关键字
BooleanField 验证给定值是否为True required
CharField 根据maxlength和minlength选项设置校验最大,最小长度 required,maxlength,minlength
ChoiceField 验证给定值是否包含在选项列表中 required,invalid_choice
DateField 验证数据是否为datetime.date,datetime.datetiem或日期格式的字符串 required,invalid
TimeField 验证数据是否为datetime.time或时间格式的字符串 required,invalid
DecimalField 验证数据是否为小数,根据maxvalue和minvalue设置校验最大值,最小值 required,invalid,maxvalue,minvalue,maxdigits,maxdecimal_places,maxwholedigits
FloatField 验证数据是否为浮点数,根据maxvalue和minvalue设置校验最大值,最小值 required,invalid,maxvalue,minvalue
IntegerField 验证数据是否为整数,根据maxvalue和minvalue设置校验最大值,最小值 required,invalid,maxvalue,minvalue
EmailField 验证数据是否为有效的电子邮件地址 required,invalid
FileField 根据maxlength和allowempty_file设置验证最大长度和是否允许空文件 required,invalid,missing,empty,max_length
FilePathField 验证数据是否包含在选项列表中 required,invalid_choice
ImageField 验证是否上传了图片文件 required,invalid,missing,empty,invalid_image
GenericIPAddressField 验证数据是否为有效的IP地址 required,invalid
MultipleChoiceField 验证数据是否存在于选项列表中 required,invalidchoice,invalidlist
RegexField 验证数据是否与某个正则表达式匹配 required,invalid
UUIDField 验证数据是否为有效的UUID字符串 required,invalid
例如:默认所有表单字段的required属性为True,表示该字段不接收空值
自定义异常:
chapter7\app\views.py
from django import forms
from django.core.exceptions import ValidationError
#定义自定义抛出异常函数
def validata_lt(value):
if "<" in value or ">" in value:
raise ValidationError("不允许小于号或大于号")
#定义字段,引用自定义异常函数
str=forms.CharField(validators=[validata_lt])
str.clean("2<3")
错误信息:
Traceback (most recent call last):
File "E:/HDCZU_Test/chapter7/app/views.py", line 40, in <module>
str.clean("2<3")
File "D:\Python3.5\lib\site-packages\django\forms\fields.py", line 150, in clean
self.run_validators(value)
File "D:\Python3.5\lib\site-packages\django\forms\fields.py", line 141, in run_validators
raise ValidationError(errors)
django.core.exceptions.ValidationError: ['不允许小于号或大于号']
网友评论