首页 > 编程语言 >drf : 序列化类使用many参数的作用,源码解析

drf : 序列化类使用many参数的作用,源码解析

时间:2024-03-25 11:25:20浏览次数:28  
标签:__ ser many 源码 BookSerializers 序列化 data book

序列化类使用many参数的作用

views.py

from rest_framework.views import APIView
from .serizlizer import BookSerializers
from rest_framework.response import Response
from .models import Books


class BookView(APIView):
    def post(self, request):
        print(request)
        ser = BookSerializers(data=request.data)
        if ser.is_valid():
            ser.save()
        return Response(ser.data)

    def get(self, request):
        book_list = Books.objects.all()
        # many=True 代表序列化多条数据
        ser = BookSerializers(instance=book_list, many=True)
        """
        <class 'rest_framework.serializers.ListSerializer'>
        ser 是ListSerializer的对象
        """
        print(type(ser))
        # 这一步才是真正将book_list转为字典并返回。调ser.data才是真正的序列化过程
        return Response(ser.data)


# 查询单条
class BookDetailView(APIView):
    def get(self, request, pk):
        book = Books.objects.filter(pk=pk).first()
        # 不传many默认为,many=False
        ser = BookSerializers(instance=book)
        """
        <class 'app01.serizlizer.BookSerializers'>
        ser是BookSerializers的对象
        """
        print(type(ser))
        # 这一步才是真正将book_list转为字典并返回。调ser.data才是真正的序列化过程
        return Response(ser.data)

这里涉及到元类的知识。

类也是一个对象,一切皆对象。类这个对象也是一个类实例化得到的,这个类就叫做元类。

对象是实例化的得到的,类也是一个对象,BookSerializers这个类也是一个对象,既然是对象,那么也会有类,类的类就叫元类。

所以,类也是由一个了类产生的,产生这个类的类就叫元类。

对象的产生过程有__new__所控制

注意:对象的实例化过程,__new__在__init__之前执行,__new__是产生空对象,__init__给对象赋值。



那么ListSerializer 和 BookSerializer 有什么联系。?

ListSerializer就是一个列表,列表套了一个个的Serializer。[ser1,ser2,ser3...]。

# 查询单条
class BookDetailView(APIView):
    def get(self, request, pk):
        book = Books.objects.filter(pk=pk).first()
        # 不传many默认为,many=False
        ser = BookSerializers(instance=book)
        """
        <class 'app01.serizlizer.BookSerializers'>
        ser是BookSerializers的对象
        """
        print(type(ser))
        """
        BookSerializers(instance=<Books: Books object (1)>):
        id = IntegerField(label='ID', read_only=True)
        name = CharField(max_length=32)
        price = IntegerField()
        publish = PrimaryKeyRelatedField(allow_null=True, queryset=Publish.objects.all(), required=False)
        """
        print(ser)
        # 这一步才是真正将book_list转为字典并返回。调ser.data才是真正的序列化过程
        return Response(ser.data)

标签:__,ser,many,源码,BookSerializers,序列化,data,book
From: https://www.cnblogs.com/HeroZhang/p/18093975

相关文章

  • drf : 模型类序列化器 以及扩展用法。
    模型类序列化器:serializer的升级。注意,此时表模型自身的校验规则也将映射过来。只需要在serializers中写一个模型类序列化器即可。serializer.py#模型类序列化器#此序列化类和表模型有对应关系,映射classPublishModelSerializer(serializers.ModelSerializer):class......
  • drf : source,定制序列化字段以及反序列化新增。局部钩子(validate_字段名),全局钩子(va
    source,SerializerMethodField,局部钩子,全局钩子serialzer.py:source用处对应字段:起别名,用处2对应方法:在表模型中定义一个方法,source可以与其关联用处3对应方法:可以当做字段第三种方法的扩展用法:使用程度高。model.pyfromdjango.dbimportmodels#Createyourmo......
  • drf : APIView执行流程和新的Request源码。APIView和Request对象分析
    DRF基本使用及执行流程分析1.继承APIView使用2.APIView的执行流程路由:path('Book1',view.Book.as_view())-->第二个参数是函数的内存地址-->APIView的as_view的执行结果-->本质还是用了View类的as_viewn内的viewc包函数,去掉了csrf的认证。-->当请求来......
  • drf: 序列化和反序列化, Django Rest_Framework 介绍也安装及使用。
    序列化与返序列化序列化:将python中的数据类型转换成指定数据类型发送给别人返序列化:接收别人发送过来的数据,返序列化成我们所需要的格式。eg::前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。DjangoR......
  • djangoCIA报价平台的设计与实现(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的飞速发展,互联网已经深入到我们日常生活的方方面面。在众多的应用场景中,报价系统作为商业交易的重要环节,扮演着至关重要的角色。尤其是在CIA(Ce......
  • djangoAndroid共享停车位(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着城市化进程的加速,汽车已成为人们日常生活中不可或缺的交通工具。然而,在许多城市中,由于停车位数量有限,停车难成为了一大问题。为了解决这一问题,共享停车......
  • 【附源码】django计算机毕业设计web的诗词信息管理平台(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在当今信息化时代,诗词作为中华民族传统文化的瑰宝,承载着丰富的历史和文化价值。然而,随着科技的发展和生活节奏的加快,人们对于诗词的接触和传承逐渐减少,尤其......
  • 【附源码】django计算机毕业设计web技术的养老服务平台(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义养老服务平台开发设计背景:随着社会老龄化的加剧,养老问题逐渐成为社会关注的热点。老年人作为社会的重要组成部分,他们的生活质量和幸福感直接关系到社会的和谐与稳定......
  • 【前端素材】推荐优质多用途生活家具购物商城网站设计Glee平台模板(附源码)
    一、需求分析在线生活家具商店网站是指专门销售各类家具和家居用品的网上商店。这类网站提供用户浏览、选择并购买各种家具产品的平台。以下是在线生活家具商店网站的一般功能:产品展示与购买: 网站展示各种家具产品,如沙发、床、桌子、椅子、柜子等,用户可以查看详细信息、图......
  • 学会HashMap源码,一篇就够了
    目录 一.数据结构 1.数组2.链表3.哈希表(1)什么是哈希?(2)哈希算法的特点(3)哈希表(4)什么是哈希冲突?怎么解决(5)HashMap是怎么解决哈希冲突的?4.红黑树(1)什么是树(2)什么是二叉树(3)什么是二叉搜索树(4)二叉搜索树的缺点(5)AVL树(6)红黑树  一. 介绍二.查找操作三.插入操......