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

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

方法:导入UniqueValidator
from rest_framework.validators import UniqueValidator
1)、可以在序列化器字段上使用validators指定自定义校验规则
2)、validators必须得为序列类型(一般为列表),在列表中可以添加多个校验规则
3)、 DRF框架自带UniqueValidator校验器必须得使用queryset指定查询集对象,用于对该字段进行校验
4)、UniqueValidator校验器,可以使用message指定自定义报错信息

DRF框架—序列化器中的字段校验规则(补充)
尝试输入同名项目检验下,如下图所示:
DRF框架—序列化器中的字段校验规则(补充)

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

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

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

三、单字段校验

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

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

; 四、多字段校验

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

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

五、to_internal_value方法

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

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

Original: https://blog.csdn.net/YZL40514131/article/details/119376720
Author: 敲代码敲到头发茂密
Title: DRF框架—序列化器中的字段校验规则(补充)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737570/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Kafka学习(十四) api讲解篇(转载)

    python 发送kafka大体有三种方式 1 发送并忘记(不关注是否正常到达,不对返回结果做处理) 2 同步发送(通过get方法等待Kafka的响应,判断消息是否发送成功) 3 …

    Python 2023年6月12日
    084
  • 关于superset集成到自己的项目中

    下载&安装 方式一:pip install apache-superset 方式二:https://github.com/apache/superset.git 搭建虚拟环…

    Python 2023年8月10日
    054
  • python读取数据库的值并保存为csv格式的文件

    由于自己不怎么会写存储过程,不能再数据库中直接处理数据,只能通过python读取数据库的数据用python处理数据。 需要引用的包为 import pymssql import p…

    Python 2023年8月19日
    058
  • mysql基础

    一、mysql描述 1、数据库相关概念 ; 2、目前主流的关系型数据库管理系统 目前主流的关系型数据库管理系统的市场占有率排名如下: Oracle:大型的收费数据库,Oracle公…

    Python 2023年11月8日
    041
  • 过滤组件、排序组件、全局异常处理、自己封装的response对象

    过滤组件 查询所有才涉及到过滤,其他接口都不需要restful规范中有一条,请求地址中带过滤条件:分页、排序、过滤统称为过滤 内置过滤类 使用内置过滤类的步骤 from rest_…

    Python 2023年10月31日
    058
  • openCV实践项目:银行卡卡号识别

    本文用于对之前openCV知识点学习的复习及实践。要求达到以下效果: 一、基本流程思路分析 本项目本质上就是进行模板匹配。 注:为多用到所学知识,为了加深理解多加了些步骤,实际上本…

    Python 2023年8月1日
    047
  • 【PyCharm中文教程 09】改造颜值超高的界面

    1. 你的IDE 当你从官网上下载下来一个 PyCharm 后,若你不对其进行一些个性化设置,相信你一定无法容忍默认的丑陋界面,就像下面这样子。 上面这个界面,有很多可以吐槽的地方…

    Python 2023年6月6日
    065
  • django中资源文件夹的引入

    django中资源文件夹的引入 1.静态资源文件夹的引入 settings.py的配置如下所示: django默认配置 STATIC_URL=’static/’ # django会…

    Python 2023年11月1日
    055
  • Django–在线相册管理系统(1)

    目录 1、感言 2、成品 3、前期准备 4、项目基础配置 4.1、AlbumManage文件夹内的文件配置 4.2、ablumapp文件夹内的文件配置 1、感言 第一次写博客,写的…

    Python 2023年8月4日
    079
  • 【面试总结】UI自动化面试

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/upstudy/p/16712685.htmlAutho…

    Python 2023年6月15日
    066
  • 支付宝支付&内网穿透

    支付宝支付&内网穿透 一 沙箱环境 二 python第三方模块python-alipay-sdk 三 python-alipay-sdk二次封装 四 支付接口 五 内网穿透…

    Python 2023年10月8日
    090
  • 七、VGG16+BN(Batch Normalization)实现鸟类数据库分类

    @ 前文 加利福尼亚理工学院鸟类数据库分类VGG16+BN版本 数据生成器 图像显示 VGG16+BN模型构建 VGG16+BN模型编译与拟合 注意: GitHub下载地址: 前文…

    Python 2023年6月3日
    099
  • 个人总结的三种Python读取txt文件(高效快捷)

    不管什么时候,读取txt文件,并生成一个完美的DataFrame数据结构,对我来说都是一项较为艰难的工作。 接下来我分享三种比较简单实用的方法,是我自己长期揣摩的方法: read_…

    Python 2023年8月1日
    052
  • yolov7: 从搭配环境到训练自己的数据集

    一.下载源码 在github中下载Yolov7源码并解压缩YOLOv7 源码 数据标注可以参考这篇文章https://blog.csdn.net/qq_39779449/artic…

    Python 2023年8月3日
    047
  • Mac多版本python管理与基本使用(Conda适用Linux,Macos和Windows)

    conda简介:Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 Conda 是为 Python 程序创建的,适用…

    Python 2023年9月8日
    057
  • Winform控件绑定数据

    在C#中提起控件绑定数据,大部分人首先想到的是WPF,其实Winform也支持控件和数据的绑定。 Winform中的数据绑定按控件类型可以分为以下几种: 简单控件绑定 列表控件绑定…

    Python 2023年10月14日
    036
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球