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