zoukankan      html  css  js  c++  java
  • drf的视图家族

    一、昨日内容复习
    """
    1、(重点)二次封装Response:自定义APIResponse继承Response,重写__init__方法
    2、(正常)设置了abstract为True的模型类,称之为基表,这样的模型类是专门作为基类来提供公有属性的序列

    3、(重点)ORM多表关联操作:
    外键所放位置
    一对多:外键放在多的一方
    多对多:外键放在常用的一方
    一对一:外键放在不常用的一方
    外键字段为正向查询字段,related_name是反向查询字段
    外键如何断关联
    设置外键字段db_constraint=False
    外键间的级联关系
    一对一:作者没了,详情也没:on_delete=models.CASCADE
    一对多:出版社没了,书还是那个出版社出版:on_delete=models.DO_NOTHING
    一对多:部门没了,员工没有部门(空不能):null=True, on_delete=models.SET_NULL
    一对多:部门没了,员工进入默认部门(默认值):default=0, on_delete=models.SET_DEFAULT
    多对多:不能设置on_delete
    4、(重点)连表序列化,在Model类中定义插拔序列化方法属性,完成连表查询
    5、(正常)子序列化可以辅助快速实现自定义外键深度的序列化,但是不能进行反序化
    6、(重点)单查群查接口,序列化类提供序列化对象,many参数控制着操作的数据是一条还是多条
    7、(正常)单删群删接口,后台操作删除字段即可,前台提供pk就是单删,提供pks就是群删
    8、(重点)单增群增接口,根据数据判断是单增还是群增,对应序列化类要设置many,而序列化类只需要通过data即可
    9、(正常)单局部改,序列化类参数instance=修改的对象, data=修改的数据, partial=是否能局部修改,单整体修改就是partial=False(默认就是False)
    10、(了解)群改,前台提供的数据,后台要转化成要修改的对象们和用来更新的数据们,ModelSerializer设置list_serializer_class关联自己的ListSerializer,重写update方法,完成群改
    """
    二、今日内容学习
    """
    视图家族
    1、View:将请求方式与视图类的同名方法建立映射,完成请求响应
    2、APView:
    1)View的所有功能;
    2)重写as_view禁用csrf认证;
    3)重写dispatch:请求、响应、渲染、异常、解析、三大认证
    4)多了一堆类属性,可以完成视图类的局部配置

    3、GenericAPIView:
    1)APView的所有功能
    2)三个方法:get_object()、get_queryset()、get_serializer()
    3)三个属性:queryset、serializer_class、lookup_url_kwarg

    4、mixins包:
    1)五大工具类:RetrieveModelMixin(retrieve), ListModelMixin(list), CreateModelMixin(create), UpdateModelMixin(updata,partial_update), DestroyModelMixin(destroy)
    2)六大工具方法:retrieve、list、create、update、partial_update、destroy

    5、generics包:
    1)一堆mixins工具类与GenericAPIView视图基类组合

    6、ViewSetMixin
    1)重写as_view(),完成请求方式与视图方法的自定义映射
    as_view({'get': 'my_get'})

    7、视图集基类:
    ViewSet(ViewSetMixin, APIView):可以自定义映射关系的APIView
    GenericViewSet(ViewSetMixin, GenericAPIView):可以自定义映射关系的GenericAPIView

    8、常用Model视图集
    1)ModelViewSet(mixins.CreateModelMixin,
    mixins.RetrieveModelMixin,
    mixins.UpdateModelMixin,
    mixins.DestroyModelMixin,
    mixins.ListModelMixin,
    GenericViewSet)
    某一资源的六大操作视图集

    2)ReadOnlyModelViewSet(mixins.RetrieveModelMixin,
                           mixins.ListModelMixin,
                           GenericViewSet)
        某一资源的只读操作视图集
    

    """
    三、今日练习
    练习A
    """
    1、整理今天所学知识点

    2、查看并研究ListAPIView工具视图类,继承该类完成汽车资源的群查接口,汽车资源需要有image资源,查看接口image资源的值

    3、研究GenericViewSet工具集,继承该类完成汽车资源的单查,群查,单增,单改,单删接口
    """
    练习B
    """
    1、搭建Vue前台,集合序列化和视图家族,完成前后台分离的图书管理系统,前台页面可以用element-ui搭建,也可以采用bootstrap+jquery搭建
    """

  • 相关阅读:
    Mysql查询语句,select,inner/left/right join on,group by.....[例题及答案]
    Java IO实现文件(及文件夹)的复制 原创代码【精】
    [精华帖]Java接口怎么定义?如何使用?【实例讲解】
    Java面向对象中this关键字详解 意义+实例讲解【hot】
    linux系统编程之进程(三):进程复制fork,孤儿进程,僵尸进程
    linux系统编程之进程(二):进程生命周期与PCB(进程控制块)
    linux系统编程之进程(一):进程与程序
    linux系统编程之文件与IO(八):文件描述符相关操作-dup,dup2,fcntl
    linux系统编程之文件与IO(七):时间函数小结
    linux系统编程之文件与IO(六):实现ls -l功能
  • 原文地址:https://www.cnblogs.com/whnbky/p/11930835.html
Copyright © 2011-2022 走看看