首页 > 其他分享 >序列化器

序列化器

时间:2023-09-19 10:59:10浏览次数:34  
标签:ser data boo 序列化 数据 字典

序列化器作用

  1、序列化,序列化器会把模型对象转换成字典,经过 response 以后变成 json 字符串,即把数据库的表数据转换成客户端的json 格式并返回

  2、反序列化,反序列化器会把客户端发送过来的数据。经过 request 以后变成字典,序列化器可以把字典转成模型

  3、反序列化,完成数据校验功能

 

简单使用

  1、写一个序列化的类,继承 serializer

  2、在类中写要序列化的字段,想序列化哪个字段,就在类中写哪个字段

  3、在视图类中使用,实例化得到序列化类的对象,把需要序列化的对象传入

  4、序列化类的对象.data 是一个序列化后的字典

  5、把字典返回,如果不使用 rest_framework 提供的 Response,就得使用JsonResponse

  

使用序列化组件修改数据,即反序列化

  1、写一个序列化的类,继承serializer

  2、在类中写要反序列化的字段,想反序列化哪个字段,就在类中写哪个字段,字段的属性

  3、如果已有的字段的校验规则不符合要求,可以写钩子函数(局部和全部)

    局部钩子:函数名的规则为 validate_字段名,接收一个参数

      如:

                             

   

    全局钩子:可针对这个序列化器进行全局检验

        

   

  4、可以使用字段的 pid = serializers.IntergerField(validator=[whether_existed_project_id]) validator来检验写一个函数

    validator =【】,列表中写函数内存地址

        

  5、更新数据

        

 

  6、在视图类中使用,导入,实例化得到序列化类的对象,把实例化的对象传入,修改的数据传入

    book = Book.objects.filter( id=pk ).first()

    boo_ser = ProjectSerializer( book, request.data ) 即

    boo_ser = ProjectSerializer( instance = book, data = request.data )

  7、数据检验 :if boo_ser . is_valid()

  8、如果检验通过,就保存:boo_ser.save()

  9、如果检验不通过,就报异常

  10、新增数据

        

   11、删除数据

        

 模型类序列化器

  指定模型,针对哪个字段进行反序列化,不需要重新create和update,若反序列化有其它字段,需要重写create和update

        

         

   1、many=True 的实际用途

      序列化多条数据,需要传many=True

          

 

  

 

标签:ser,data,boo,序列化,数据,字典
From: https://www.cnblogs.com/lili37/p/17703224.html

相关文章

  • 深度比较常见库中序列化和反序列化性能的性能差异
    背景和目的本文介绍了几个常用的序列化和反序列化库,包括System.Text.Json、Newtonsoft.Json、Protobuf-Net、MessagePack-Net,我们将对这些库进行性能测评库名称介绍Github地址System.Text.Json.NETCore3.0及以上版本的内置JSON库,用于读写JSON文本。它提供了高性能......
  • 序列化和反序列化
    什么是序列化?什么是反序列化?如果我们需要持久化Java对象比如将Java对象保存在文件中,或者在网络传输Java对象,这些场景都需要用到序列化。简单来说:序列化:将数据结构或对象转换成二进制字节流的过程反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象......
  • SPI、序列化、IO
    1.SPI即ServiceProviderInterface,字面意思就是:“服务提供者的接口”,我的理解是:专门提供给服务提供者或者扩展框架功能的开发者去使用的一个接口。 序列化:将数据结构或对象转换成二进制字节流的过程反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象......
  • 【wp】文件上传phar反序列化
    题目文件泄露,得到两个文件:index.php<!DOCTYPEhtml><html><head><title>JustUpload!</title><metacharset="UTF-8"><style>.container{display:flex;flex-direction:......
  • 从 MongoDb 集合中选择文档返回响应时出现不可序列化错误
    当从MongoDB集合中选择文档返回响应时出现不可序列化错误,可能是因为以下原因:数据类型不可序列化:检查文档中的数据类型是否可被序列化。某些数据类型,如日期对象或二进制数据,可能无法直接序列化为常见的数据格式(如JSON)。在这种情况下,您可能需要先对这些数据进行处理,将其转换为可序列......
  • 消息转换器 替代 @JsonFormat注解 完成 日期类序列化时的格式转换
      spring中的日期类从数据库读取完数据后,默认的格式其实很难看,传输给前端也不友好,所以我们一般会将日期类通过类似@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateLocalDateTimecreateTime;来更改日期类序列化时的格式。但这样太麻烦了,我们还可以用SpringMVC框架的......
  • 在 Java 中自定义反序列化:实现可序列化接口
    实现可串行化接口的功能Serialized接口用于管理Java默认序列化机制使用的序列化和反序列化过程。Java虚拟机(JVM)通过该类的Serialized接口实现来指示该类是否具有可序列化和反序列化的能力。该接口不仅有利于序列化,而且还使开发人员可以自由地更改默认的反序列化行为。由......
  • php反序列化神奇构造
    来自[网鼎杯2020朱雀组]phpweb打开看看,我超,孙......
  • SQL注入和序列化的结合
    题目来自:[网鼎杯2018]Fakebook感觉原来学的有点局限,就只考虑到sql注入或者php反序列化啥的单方向,很少思考过结合起来的考法。话不多说,直接开解:登录要密码,join就是注册,估计直接注入注不出来,不然就不会给注册的选项了,那么我们就注册一个吧。这里注意一下blog的意思是给一个域......
  • 《Web安全基础》07. 反序列化漏洞
    @目录1:基本概念1.1:序列化&反序列化1.2:反序列化漏洞1.3:POP链2:PHP反序列化2.1:序列化&反序列化2.2:魔术方法3:JAVA反序列化3.1:序列化&反序列化3.2:反射机制3.3:相关资源本系列侧重方法论,各工具只是实现目标的载体。命令与工具只做简单介绍,其使用另见《安全工具录》。靶场参考:pi......