Viewset 是 DRF 中引入的一个 class,它对 DRF 自身提供的 APIView 进行了再次封装,而 APIView 是对原生 Django View 的二次封装,灵活运用 Viewset 能够大幅度提高业务开发效率,且大大提高了代码的可维护性。django
来自 Django 原生中,是全部基于类的view的父类,它负责将视图链接到URL、HTTP 方法调度(GET,POST等)和其它简单的功能。json
APIView 是 DRF 中全部view的父类,自己继承于Django的view,只有简单的调度方法和检查。bash
Request Response
而不是django的HttpRequest
HttpResponse
response
返回的内容需是序列化的json
from rest_framework import viewsets
复制代码
简介:Viewset的基类,它重写了原来 django view 中 .as_view()
方法,使得注册Url变得更加简单,原生 Django View 经过重写 get 和 post 方法的具体视图来达到实现逻辑
在 Viewset 中则可经过:ide
view = MyViewSet.as_view({'get': 'list', 'post': 'create'})
复制代码
指定请求调用的函数函数
继承:ViewSetMixin
generics.GenericAPIView
post
class GenericViewSet(ViewSetMixin, generics.GenericAPIView):
""" The GenericViewSet class does not provide any actions by default, but does include the base set of generic view behavior, such as the `get_object` and `get_queryset` methods. """
pass
复制代码
(因而可知 Viewset 是对原来 APIView 的二次封装)spa
继承:mixins.CreateModelMixin
mixins.RetrieveModelMixin
mixins.UpdateModelMixin
mixins.DestroyModelMixin
mixins.ListModelMixin
GenericViewSet
rest