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

方法:导入UniqueValidator

from rest_framework.validators import UniqueValidator

1)、可以在序列化器字段上使用validators指定自定义校验规则

2)、validators必须得为序列类型(一般为列表),在列表中可以添加多个校验规则

3)、DRF框架自带UniqueValidator校验器必须得使用queryset指定查询集对象,用于对该字段进行校验

4)、UniqueValidator校验器,可以使用message指定自定义报错信息

字段联合校验 java 字段校验规则_后端


尝试输入同名项目检验下,如下图所示:

字段联合校验 java 字段校验规则_django_02

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

添加自定义校验规则

1)、可以在类外面自定义校验函数

2)、第一个参数为待校验的值

3)、如果校验不通过,必须得抛出serializers.ValidationError(‘报错信息’)异常,同时可以指定具体得报错信息

4)、需要将校验函数名放置到某一个字段的 validators列表中(不加括号)

字段联合校验 java 字段校验规则_python_03


字段联合校验 java 字段校验规则_python_04

三、单字段校验

1)、可以在序列化器类中对单个字段进行校验

2)、但字段的校验方法名称,必须把validate_作为前缀,加上待校验得字段名,如:validate_待校验得字段名

3)、如果校验不通过必须得返回serializers.ValidationError(‘具体得报错信息’)

4)、如果校验通过,往往将校验之后得值返回

5)、如果该字段在定义时添加得校验规则不通过,那么是不会进行单字段校验的,如果能对单字段进行校验说明上面是校验通过的。

6)、必须返回attr

字段联合校验 java 字段校验规则_字段联合校验 java_05

四、多字段校验

1)、可以在序列化器类中对多个字段进行联合校验

2)、使用固定得validate方法,会接收上面校验通过之后的字典数据

3)、当所有字段定义时添加的校验规则都通过,并且每个字典得单字段校验通过得情况下,才会调用validate方法

4)、必须返回attrs

字段联合校验 java 字段校验规则_python_06

五、to_internal_value方法

1、to_internal_value方法,是所有字段开始进行校验时的入口方法(最先调用的方法)

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

字段联合校验 java 字段校验规则_字段联合校验 java_07