【DRF】View APIView Viewset(更新中~)

简介

Viewset 是 DRF 中引入的一个 class,它对 DRF 自身提供的 APIView 进行了再次封装,而 APIView 是对原生 Django View 的二次封装,灵活运用 Viewset 能够大幅度提高业务开发效率,且大大提高了代码的可维护性。django


三者区别

【View】

来自 Django 原生中,是全部基于类的view的父类,它负责将视图链接到URL、HTTP 方法调度(GET,POST等)和其它简单的功能。json

【APIView】

APIView 是 DRF 中全部view的父类,自己继承于Django的view,只有简单的调度方法和检查。bash

APIView 和 View 的不一样

  • 请求和返回使用的 DRF 的Request Response而不是django的HttpRequest HttpResponse
  • 请求传入时进行身份验证,并在传给处理方法前进行权限检验
  • 任何APIException都会被捕捉并放入合适的想要中
  • response返回的内容需是序列化的json

引入Viewset

from rest_framework import viewsets
复制代码

Viewsets包含的Class(经常使用的)

0.ViewSetMixin

简介:Viewset的基类,它重写了原来 django view 中 .as_view() 方法,使得注册Url变得更加简单,原生 Django View 经过重写 get 和 post 方法的具体视图来达到实现逻辑
在 Viewset 中则可经过:ide

view = MyViewSet.as_view({'get': 'list', 'post': 'create'})
复制代码

指定请求调用的函数函数

1.GenericViewSet

继承:ViewSetMixin generics.GenericAPIViewpost

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

2.ModelViewSet

继承:mixins.CreateModelMixin mixins.RetrieveModelMixin mixins.UpdateModelMixin mixins.DestroyModelMixin mixins.ListModelMixin GenericViewSetrest

相关文章
相关标签/搜索