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

    一、视图基类APIView

      1、路径:rest_framework.views.APIView。

      2、继承:原始View。

      3、重新封装成了drf的request对象。

      4、返回drf的Response对象。

      5、会自动捕获任何APIException异常,并处理成合适的响应信息。

      6、在进行dispatch()分发前,会对请求进行身份认证、权限检查、流量控制。

        ①身份认证类:authentication_classes,列表或元祖。

        ②权限检查类:permissoin_classes,列表或元祖。

        ③流量控制类:throttle_classes,列表或元祖。

    二、通用视图类GenericAPIView

      1、路径:rest_framework.generics.GenericAPIView。

      2、继承:APIView。

      3、主要增加了操作序列化器和数据库查询的方法,通常在使用时,可搭配一个或多个视图扩展类,为视图扩展类的执行提供方法支持。

      4、主要属性:

        ①queryset:需要查询的模型对象集。

        ②serializer_class :需要使用的序列化器类。

      5、主要方法:

        ①get_queryset(self):获取queryset属性对应的模型对象集。

        ②get_object(self):根据路由传入的<pk>值,获取对应模型对象,若该模型对象不存在,会返回404。

        ③get_serializer(self, args, *kwargs):返回序列化器对象。

        ④get_serializer_class(self):是get_serializer方法内部执行的方法,可以重写。

    三、视图扩展类

      1、路径:rest_framework.mixins.视图扩展类。

      2、继承:未继承其他视图类。

      3、将后端对数据资源的增删查该操作流程封装成了五种简单的方法,若其他视图需要使用这五种方法,可以通过继承相应的视图扩展类来直接获取。

      4、方法的实现需要搭配GenericAPIView,调用GenericAPIView提供的序列化器与数据库查询的方法。

      5、视图扩展类:

        ①ListModelMixin:提供了list方法,查询所有。

        ②CreateModelMixin:提供了create方法,新增一个。

        ③RetrieveModelMixin:提供了retrieve方法,查询一个。

        ④UpdateModelMixin:提供了update方法,更新一个。

        ⑤DestroyModelMixin:提供了destroy方法,删除一个。

    四、视图子类

      1、路径:rest_framework.generics.视图子类。

      2、继承:GenericAPIView及一个或多个视图扩展类。

      3、继承了哪个视图扩展类,就会将视图拓展类的list/create/retrieve/update/destroy的方法对应为视图子类的get/post/get/put(patch)/delete方法。

      4、视图子类:

        ①ListAPIView:提供了get方法,查询所有。

        ②CreateAPIView:提供了post方法,新增一个。

        ③RetrieveAPIView:提供了get方法,查询一个。

        ④UpdateAPIView:提供了put(patch)方法,更新一个。

        ⑤DestroyAPIView:提供了delete方法:删除一个。

        ⑥ListCreateAPIView:提供了get和post方法,查询所有和新增一个。

        ⑦RetrieveUpdateAPIView:提供了get和put(patch)方法,查询一个和更新一个。

        ⑧RetrieveDestroyAPIView:提供了get和delete方法,查询一个和删除一个。

        ⑨RetrieveUpdateDestroyAPIView:提供了get、put(patch)和delete方法,查询一个、更新一个和删除一个。

    五、视图集

      1、ViewSetMixin:

        ①路径:rest_framework.viewsets.ViewSetMixin。

        ②继承:未继承其他视图类。

        ③重写了as_view,可以传入actions属性,通过actions属性可以捕捉请求方式从而执行对应的视图类的方法。

      2、ViewSet:

        ①路径:rest_framework.viewsets.ViewSet。

        ②继承:ViewSetMixin和APIView。

        ③即可以往as_view写入actions属性,又可以按照APIView的风格写视图方法。

      3、GenericViewSet:

        ①路径:rest_framework.viewsets.GenericViewSet。

        ②继承:ViewSetMixin和GenericAPIView。

        ③即可以往as_view写入actions属性,又可以按照GenericAPIView的风格写视图方法。

      4、ModelViewSet:

        ①路径:rest_framework.viewsets.ModelViewSet。

        ②继承:GenericViewSet和所有视图视图拓展类。

        ③即可以往as_view写入actions属性,又相当于有了所有视图子类的方法。

      5、ReadOnlyModelViewSet:

        ①路径:rest_framework.viewsets.ReadOnlyModelViewSet。

        ②继承:GenericViewSet和ListModelMixin、RetrieveModelMixin。

        ③与ModelViewSet相比,只有get(查询所有)和post(查询一个)两个方法。

    六、图形化关系

     

  • 相关阅读:
    去除网页图片缝隙
    只有定位的盒子有z-index
    clearfix
    2018CSS特效集锦牛逼
    c#spinLock使用
    redis 五种数据结构详解(string,list,set,zset,hash)
    C# StackExchange.Redis 用法总结
    Markdown 编辑器
    C# Task任务详解及其使用方式
    MongoDB学习笔记——MongoDB 连接配置
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13274294.html
Copyright © 2011-2022 走看看