一、视图基类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(查询一个)两个方法。

六、图形化关系

 

 

posted on 2020-05-22 04:01  焚音留香  阅读(135)  评论(0编辑  收藏  举报