Django 項目的 ORM(Object Relational Mapping, 對象關係映射) 能夠給咱們省略構造 SQL 查詢語句的麻煩, 可是對於試圖, 咱們已經構建了 Model 的狀況下依舊須要創造一些邏輯代碼, 那已知這些封裝, 咱們能夠再對代碼簡化。python
在標準的接口中, 提供了標準的建立/檢索/更新/刪除實例對象的路由, 如:app
class UserViewSet(viewsets.ViewSet):
""" Example empty viewset demonstrating the standard actions that will be handled by a router class. If you're using format suffixes, make sure to also include the `format=None` keyword argument for each action. """
def list(self, request):
pass
def create(self, request):
pass
def retrieve(self, request, pk=None):
pass
def update(self, request, pk=None):
pass
def partial_update(self, request, pk=None):
# 不經常使用
pass
def destroy(self, request, pk=None):
pass
複製代碼
在分發期間你能夠使用如下屬性:post
basename
:用於建立 URL 的基礎名稱action
:當前操做的動做名稱字符串(如 list
)detail
:是否返回列表/詳情信息的布爾值suffix
:視圖集類型的顯示後綴name
:視圖集的顯示名稱, 會與 suffix
參數互斥description
:單個試圖的顯示描述ViewSet
集成自 APIView
, 你能夠使用任何標準屬性獲取數值幫助 API 構建, 如 permission_classes
, authentication_classes
來幫助試圖控制訪問策略。spa
GenericViewSet
是繼承自 GenericAPIView
, 並提供了 get_object
和 get_queryset
的方法以及其餘視圖行爲的方法。code
ModelViewSet
是繼承自 GenericAPIView
, 並支持 .list()
, .retrieve()
, .create()
, .update()
, .partial_update()
和 .destroy()
方法的視圖類, 一般你須要指定 queryset
和 serializer_class
兩個屬性。orm
ReadOnlyModelViewSet
時繼承自GenericAPIView
, 並支持 .list()
, .retrieve()
的只讀視圖類, 一般你須要指定 queryset
和 serializer_class
兩個屬性。router