一、怎么校验创建的项目名是否是唯一的,当项目名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方法