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搭建
    """

  • 相关阅读:
    BZOJ3752 : Hack
    XIV Open Cup named after E.V. Pankratiev. GP of SPb
    XIII Open Cup named after E.V. Pankratiev. GP of Ukraine
    BZOJ2087 : [Poi2010]Sheep
    BZOJ2080 : [Poi2010]Railway
    BZOJ2082 : [Poi2010]Divine divisor
    Moscow Pre-Finals Workshop 2016. National Taiwan U Selection
    XIII Open Cup named after E.V. Pankratiev. GP of Asia and South Caucasus
    XIII Open Cup named after E.V. Pankratiev. GP of Azov Sea
    XIII Open Cup named after E.V. Pankratiev. GP of SPb
  • 原文地址:https://www.cnblogs.com/whnbky/p/11930835.html
Copyright © 2011-2022 走看看