表单校验

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

 

posted @ 2021-03-24 22:22  半日闲1  阅读(56)  评论(0编辑  收藏  举报