DRF框架—序列化器中的字段校验规则(补充)

一、怎么校验创建的项目名是否是唯一的,当项目名name字段不唯一,怎么设置提示信息?

方法:导入UniqueValidator
from rest_framework.validators import UniqueValidator
1)、可以在序列化器字段上使用validators指定自定义校验规则
2)、validators必须得为序列类型(一般为列表),在列表中可以添加多个校验规则
3)、DRF框架自带UniqueValidator校验器必须得使用queryset指定查询集对象,用于对该字段进行校验
4)、UniqueValidator校验器,可以使用message指定自定义报错信息
在这里插入图片描述
尝试输入同名项目检验下,如下图所示:
在这里插入图片描述

二、项目名称中必须得包含“项目”2字

添加自定义校验规则
1)、可以在类外面自定义校验函数
2)、第一个参数为待校验的值
3)、如果校验不通过,必须得抛出serializers.ValidationError(‘报错信息’)异常,同时可以指定具体得报错信息
4)、需要将校验函数名放置到某一个字段的 validators列表中(不加括号)
在这里插入图片描述
在这里插入图片描述

三、单字段校验

1)、可以在序列化器类中对单个字段进行校验
2)、但字段的校验方法名称,必须把validate_作为前缀,加上待校验得字段名,如:validate_待校验得字段名
3)、如果校验不通过必须得返回serializers.ValidationError(‘具体得报错信息’)
4)、如果校验通过,往往将校验之后得值返回
5)、如果该字段在定义时添加得校验规则不通过,那么是不会进行单字段校验的,如果能对单字段进行校验说明上面是校验通过的。
6)、必须返回attr
在这里插入图片描述

四、多字段校验

1)、可以在序列化器类中对多个字段进行联合校验
2)、使用固定得validate方法,会接收上面校验通过之后的字典数据
3)、当所有字段定义时添加的校验规则都通过,并且每个字典得单字段校验通过得情况下,才会调用validate方法
4)、必须返回attrs
在这里插入图片描述

五、to_internal_value方法

1、to_internal_value方法,是所有字段开始进行校验时的入口方法(最先调用的方法)
2、会依次对序列化器类的各个序列化器字段进行校验:先执行字段定义时的校验规则
3、首先对字段类型进行校验——》依次验证validators列表中的校验规则——》从右到左验证其他的校验规则——》调用单字段校验方法(如果有定义)
to_internal_value方法调用结束——》调用多字段联合调用validate方法

在这里插入图片描述


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值