表单校验
django中的表单不是html中的那个表单,这里是指django有一个组件名叫表单
1. 创建一个forms.py 文件,放在指定的app当中,然后在里面写表单
2. forms.py 文件写类:
from django import forms class targetForm(forms.Form): name = forms.CharField(max_length=255, min_length=1) version = forms.CharField(max_length=128, min_length=1, required=False) # 可为空
3. 函数内校验参数
params = json.loads(request.body)
form = targetForm(params)
if not form.is_valid():
pass
或者
form = targetForm(request.POST) if not form.is_valid(): pass
is_valid()
方法可以验证用户提交的数据是否合法, 这个方法会返回一个bool,合法返回True
, 否则返回False
print(request.POST)
print(form.is_valid()) 打印查看
自定义验证规则
假如我们推出了反馈表单,电子邮件纷至沓来。这就引出一个问题:有些邮件可能只有一两个词,不知所云。因此,我们决定采取一个新的验证措施:建议写四个词以上。在 Django 表单中使用自定义的验证有多种方式。如果验证规则要不断复用,可以自定义一个字段类型。不过,多数自定义的验证都是一次性的,可以直接写在Form 类中。我们想对 message 字段做额外的验证,因此在 Form 类中添加一个 clean_message() 方法
Django 的表单系统会自动查找名称以 clean_ 开头、以字段名结尾的方法。如果存在这样的方法,在验证过程中调用。这里,clean_message() 方法会在指定字段的默认验证逻辑(这个 CharField 是必填的)执行完毕后调用
1. CharField: 用来接收文本。 参数: max_length:这个字段值的最大长度。 min_length:这个字段值的最小长度。 required:如果没有写这个参数,即默认required=True,即这个字段不能为空。 error_messages:在某个条件验证失败的时候,给出错误信息。 2. EmailField: 用来接收邮件,会自动验证邮件是否合法。 3. FloatField: 用来接收浮点类型,并且如果验证通过后,会将这个字段的值转换为浮点类型。 参数: max_value:最大的值。 min_value:最小的值。 错误信息的key:required、invalid、max_value、min_value。 4. IntegerField: 用来接收整形,并且验证通过后,会将这个字段的值转换为整形。 参数: max_value:最大的值。 min_value:最小的值。
参考:https://blog.csdn.net/xujin0/article/details/84113013
django模型字段和表单字段对应:
https://blog.csdn.net/liereli/article/details/79795205
模型字段 表单字段 AutoField 在Form类中无法使用 BigAutoField 在Form类中无法使用 BigIntegerField IntegerField,最小-9223372036854775808,最大9223372036854775807. BooleanField BooleanField CharField CharField,同样的最大长度限制。如果model设置了null=True,Form将使用empty_value CommaSeparatedIntegerField CharField DateField DateField DateTimeField DateTimeField DecimalField DecimalField EmailField EmailField FileField FileField FilePathField FilePathField FloatField FloatField ForeignKey ModelChoiceField ImageField ImageField IntegerField IntegerField IPAddressField IPAddressField GenericIPAddressField GenericIPAddressField ManyToManyField ModelMultipleChoiceField NullBooleanField NullBooleanField PositiveIntegerField IntegerField PositiveSmallIntegerField IntegerField SlugField SlugField SmallIntegerField IntegerField TextField CharField,并带有widget=forms.Textarea参数 TimeField TimeField URLField URLField