单个字段的验证

1.在序列化器里定义校验字段的钩子方法   validate_字段

2.获取字段的数据

3.验证不通过,抛出异常  raise serializers.ValidationError("校验不通过的说明")

4.验证通过,直接返回字段数据

# 对title字段进行验证
def validate_title(self,value):
# 判断value是否含有敏感字段
if "xx" in value:
# 存在敏感字段,抛出异常并附上自定义的原因
raise serializers.ValidationError("该字段含有敏感词") # 不存在,则直接返回
return value

多个字段的验证

1.在序列化器定义validate方法

2.attrs是所有数据组成的字典

3.不符合抛出异常 raise serializers.ValidationError("校验不通过的说明")

# 对多个字段进行验证
def validate(self, attrs):
# arrrs是数据组成的字典 # 判断linux的数是否在linux分类
if "linux" in attrs.get('title') and attrs['category_post'] == 2:
return attrs
else:
raise serializers.ValidationError("图书与分类不一致")

自定义验证器

使用:在字段添加   validators=[自定义验证器,]

# 自定义验证器
def my_validate(value):
if "xxx" in value:
raise serializers.ValidationError("该字段包含敏感词!!!")
else:
return value
title = serializers.CharField(max_length=32,validators=[my_validate,])             # 使用自定义验证器

三者的权重:

自定义验证器 > 单个字段的验证 > 多个字段的验证

【DRF框架】序列化组件——字段验证的更多相关文章

  1. 第三章、drf框架 - 序列化组件 | Serializer

    目录 第三章.drf框架 - 序列化组件 | Serializer 序列化组件 知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer( ...

  2. drf框架 - 序列化组件 | ModelSerializer (查,增,删,改)

    ModelSerializer 序列化准备: 配置 settings.py # 注册rest_framework框架 INSTALLED_APPS = [ ... 'rest_framework' ] ...

  3. drf框架 - 序列化组件 | Serializer

    序列化组件 知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) 序列化与反序列化 序列化: 将对象序列化成字符串用户传输 ...

  4. drf框架序列化和返序列化

    0903自我总结 drf框架序列化和反序列化 from rest_framework import serializers 一.自己对于序列化和反序列化使用的分类 前后端交互主要有get,post,p ...

  5. DRF的序列化组件

    目录 DRF的序列化组件 Serializer组件 序列化 反序列化 ModelSerializer组件 序列化和反序列化 自定义Response方法 基表相关 DRF中ORM的多表关联操作 外键设计 ...

  6. Django框架(十八)—— drf:序列化组件(serializer)

    序列化组件 # 模型层 from django.db import models class Book(models.Model): nid = models.AutoField(primary_ke ...

  7. Django框架(十九)—— drf:序列化组件(serializer)

    目录 序列化组件 一.利用for循环来实现序列化(繁琐) 二.利用Django提供的序列化组件(不可控需要的字段) 三.利用drf提供的序列化组件 1.基于Serializer类实现序列化--基本语法 ...

  8. drf框架 - 过滤组件 | 分页组件 | 过滤器插件

    drf框架 接口过滤条件 群查接口各种筛选组件数据准备 models.py class Car(models.Model): name = models.CharField(max_length=16 ...

  9. drf 之序列化组件

    序列化 把Python中对象转换为json格式字符串 反序列化 把json格式转为为Python对象. 用orm查回来的数据都是都是一个一个的对象, 但是前端要的是json格式字符串. 序列化两大功能 ...

随机推荐

  1. 【428】Dijkstra 算法

    算法思想:(单源最短路径) 1个点到所有其他点的最短路径 查找顶点到其他顶点的最短路径,无法到达的记为+∞,找到最小的,就找到了最短路径的顶点 查看上一轮找到的最小点到达其他点的最小值,找到最短路径的 ...

  2. [导航教程] [C#基类库大全]官方产品发布与源码下载---苏飞版

    http://www.sufeinet.com/thread-655-1-1.html

  3. /var/spool/postfix

    centos磁盘优化,发现/var/spool/postfix/maildrop下有大量文件. cron进程默认会将计划任务中所运行的脚本的警告.错误信息或者脚本输出信息发送给计划任务的所有者,而由于 ...

  4. 【ssh连接docker container问题】

    在向docker container执行ssh或scp的时候,应该将docker container的22端口映射出来,然后ssh/scp命令指定映射出来的端口

  5. 未找到路径“ ”的控制器或该控制器未实现 IController。

    未找到路径“/Platform/t_spay_sub_mchno/Index”的控制器或该控制器未实现 IController. 从SVN复制了份代码修改,然后找不到控制器和页面.在项目属性-WEB- ...

  6. spaces的坑

    spacemacs的坑,改镜像源,不能使用退格 emacs25以上可以装spacemacs 目前在mac上装emacs26.1 使用spacemacs的时候会有melpa.org访问慢或者访问不了的问 ...

  7. golang 学习 (八)协程

    一: 进程.线程 和 协程 之间概念的区别:        对于 进程.线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)    (补充: 抢占式调度与非抢占(轮询 ...

  8. idea的项目转maven项目

    鼠标右键pom.xml>>>>>> Add as Maven Project

  9. 6.2.3 reginst中的yzm

    @RequestMapping("/reginst/{yzm}") public Object reginst(User user,@PathVariable String yzm ...

  10. vue之$event获取当前元素的节点

    <p @click = “clickfun($event)”>点击</p> methods: { clickfun(e) { // e.target 是你当前点击的元素 // ...