(四) 序列化器类使用整理

2024-04-04 04:20
文章标签 使用 整理 序列化 器类

本文主要是介绍(四) 序列化器类使用整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从一、序列化器类中,或 视图集源码 中,

可以得知:

序列化器类可以接收一个instance ,和一个data

serializer_obj =XxxxSerializer(instance,data=request.data)                

(更新时,instance相当于原来的值,data是前端传来的新的值

当data有接收到值时,serializer_obj.is_valid(),  这个方法才可以使用。

调用序列化器

  • 正常的写法: serializer_obj  =    XxxxSerializer(instance,data=request.data)
    • 如果data接收了有东西,serializer_obj .data表示:校验通过后的值serializer_obj  .validated_data值。 (如果某个字段为write_only=True,serializer_obj .data输出还没有这个地段 )
  • 在视图集中:定义action方法时可以这么写: serializer_obj =self.get_serializer(instance, data=request.data)
    • ​​​​​​​​​​​​​​因为视图集中GenericAPIView类提供了get_serializer(参数1,参数2) 的方法
  • 视图集中(用的少),action方法中,或者这样写get_serializer_class()(参数1,参数2)

得到一个序列化器对象 serializer_obj后,可以调用serializer_obj.save() 方法,序列化器类会自己判断,

  • 如果只传了data,执行save方法时,是模型序列化器类 自带的create 
  • 如果传了instance 和data,执行save方法,是模型序列化器类自带的的update
  • save方法,可以传值,数据也是拼在 validated_data数据 或 覆盖(如果有同样的),校验通过后的数据里面, 举例有一些请求参数需要后端自己生成,比如创建人更新人

模型序列化器类本身

一:模型序列化器类中,自带了create 和update方法

是可以修改的

自带的create方法,和update方法,会接收validated_data数据,也就是新增,或者更新校验通过的数据。 举例: 注册时需要传短信验证码code,但又不需要入库,传了code会报错,就可以再create方法里把code删了(备注见下图,可以知create和update的执行是在校验之后进行的)下面有举例

二:序列化器类中,还有多字段校验方法,def validate(),校验入口方法,单字段校验方法def validate_name():

顺序为

validate方法,会接收一个对象。即前端传来的东西,在这里可以进行多字段校验

它的返回,就返回 接收的参数

举例

1. 使用seve()方法传值【视图集中】

在视图集中,调用save方法的地方,传递了值

2.  重写save() ,即同时重写了create和update【序列化器中】

3.  重写序列化器类中的create方法案例【序列化器类中】

a. 不入库的多余请求参数处理

注册用户时,需要传短信验证码,但是短信验证码又不需要入库

b. 新增之后,想把一些东西返回出来

如:注册接口,想实现注册就登录的效果,需要在注册接口响应中,返回token,就可以再create中去增加这个值, 它是再执行了create方法之后加的,就不影响入库

b. 创建一个模型对象时,同时创建另一个模型对象

柠檬班的项目:修改了项目序列化器的新增 create方法,让它可以项目的同时,可以新增一个debugtalk

c. 自定义请求参数名称 

首先:想让前端传 这个名称 members_ids,但是又不符合入库的名字,就要处理

对前端传递的字段做处理,修改成入库需要的字段数据 

4 . 写多字段校验方法validate()

1. 保存config时,校验了每个参数了的格式是否为符合要求的格式, 因为它接收一个字典,就随便写了一个叫attrs的参数名称

返回也是返回的 接受的内容

 2 .登录序列化器中(这里面的validate相当于是重写TokenObtainPairSerializer序列化器类的validate,返回的即是响应

5.  常见字段处理的情况

1. 想要响应中是值而不仅仅是code

2. 对于外键字段处理

 6. 序列化器类中,自定义方法

在定义时,可以很方便的拿到数据对象的某个值,以及序列化后的值,就可以拿到数据进行处理

可以使用:self.instance 和 self.data, 进行拿值

序列化器类中的方法,又很方便被视图集使用

 

这篇关于(四) 序列化器类使用整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874784

相关文章

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(