【DRF框架】序列化组件——字段验证

单个字段的验证

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,])             # 使用自定义验证器

三者的权重:

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

原文地址:https://www.cnblogs.com/st-st/p/10123318.html

时间: 2024-11-06 03:44:19

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

drf框架 - 序列化组件

drf框架 - 序列化组件 序列化与反序列化 序列化: 将对象序列化成字符串用户传输 反序列化: 将字符串反序列化成对象用于使用 drf的序列化与反序列化 序列化: 将Model类对象序列化成字符串用户传输 反序列化: 将字符串反序列化成Model对象用于使用 Serializer 序列化准备: 模型层: models.py class User(models.Model): SEX_CHOICES = [ [0, '男'], [1, '女'], ] name = models.CharFiel

drf框架 - 序列化组件 | Serializer

序列化组件 知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) 序列化与反序列化 序列化: 将对象序列化成字符串用户传输 反序列化: 将字符串反序列化成对象用于使用 drf的序列化与反序列化 序列化: 将Model类对象序列化成字符串用户传输 反序列化: 将字符串反序列化成Model对象用于使用 Serializer 序列化准备: 模型层: models.py class User(models.Model): SE

drf框架序列化

目录 drf框架序列化 |反序列化: 序列化与反序列化: drf序列化与反序列化: 序列化: models.py Serializers.py Serializer 反序列化: views.py: ModelSerializers 指定表模型: 自定义反序列化方法: drf框架序列化 |反序列化: 序列化与反序列化: 序列化:对象转换为字符串用于传输 反序列化:字符串转换为对象用于使用 序列化是为了保持对象在内存中的状态,并且可以把保存的对象状态再读出来 a.数据持久化:比如一个电商平台,有数万

django drf框架中的user验证以及JWT拓展的介绍

登录注册是几乎所有网站都需要去做的接口,而说到登录,自然也就涉及到验证以及用户登录状态保存,最近用DRF在做的一个关于网上商城的项目中,引入了一个拓展DRF JWT,专门用于做验证和用户状态保存.这个拓展比传统的CSRF更加安全.先来介绍一下JWT认证机制吧! Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被用来在身

drf 核心 序列化组件Serializer

知识点: Serializer(偏底层).ModelSerialize(重点).ListModelSerializer(辅助群改) 一.Serializer 1.序列化准备: 模型层:models.py class User(models.Model): SEX_CHOICES = [ [0, '男'], [1, '女'], ] name = models.CharField(max_length=64) pwd = models.CharField(max_length=32) phone =

DjangoRestFramework学习二之序列化组件、视图组件

目录 DjangoRestFramework学习二之序列化组件.视图组件 一 序列化组件 二 视图组件(Mixin混合类) DjangoRestFramework学习二之序列化组件.视图组件 本节目录 一 序列化组件 首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧: Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},] Courses--- POST --->添加数据 -----> 返回添加的数据{ } course

19.DjangoRestFramework学习二之序列化组件、视图组件

一 序列化组件 首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧: Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},] Courses--- POST --->添加数据 -----> 返回添加的数据{ } courses/1 ---PUT---> 更新pk=1的数据 ----->返回更新后的数据{ } courses/1 --- DELETE---> 删除pk=1的数据 -----> 返回空

Django框架-Form组件

一.DjangoForm组件介绍 我们之前在html页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如验证用户是否输入,输入的长度和格式等是否正确,如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息. Django Form组件就实现了上面所述的功能. 1.生成页面可用的html标签(生成input框) 2.对用户提交的数据进行校验 3.错误信息的展示 4.保留上次的输入 缺

Restful framework【第三篇】序列化组件

基本使用 -序列化 -对象,转成json格式 用drf的序列化组件 -定义一个类继承class BookSerializer(serializers.Serializer): -写字段,如果不指定source,字段名必须跟数据库字段名对应(source指定的值跟字段名不能重复) -source还可以指定方法 -publish=serializers.SerializerMethodField() def get_publish(self,obj): obj.publish #obj.author