• 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(查询一个)两个方法。

    六、图形化关系

     

  • 相关阅读:
    HDU 6182 A Math Problem 水题
    HDU 6186 CS Course 位运算 思维
    HDU 6188 Duizi and Shunzi 贪心 思维
    HDU 2824 The Euler function 欧拉函数
    HDU 3037 Saving Beans 多重集合的结合 lucas定理
    HDU 3923 Invoker Polya定理
    FZU 2282 Wand 组合数学 错排公式
    HDU 1452 Happy 2004 数论
    HDU 5778 abs 数论
    欧拉回路【判断连通+度数为偶】
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13274294.html
Copyright © 2020-2023  润新知