Django表单字段校验

2020-11-01  本文已影响0人  Chaweys

字段校验
字段类                校验操作                                                            错误信息关键字
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: ['不允许小于号或大于号']
上一篇 下一篇

猜你喜欢

热点阅读