這個類擴展了REST框架的APIView
類,經過GenericAPIView
與一個或多個mixin類組合而構建的api
在使用通用視圖時,將覆蓋原視圖,並設置多個類屬性app
from django.contrib.auth.models import User from myapp.serializers import UserSerializer from rest_framework import generics from rest_framework.permissions import IsAdminUser class UserList(generics.ListCreateAPIView): queryset = User.objects.all() serializer_class = UserSerializer permission_classes = (IsAdminUser,)
多對多的關係下框架
class UserList(generics.ListCreateAPIView): queryset = User.objects.all() serializer_class = UserSerializer permission_classes = (IsAdminUser,) def list(self, request): # Note the use of `get_queryset()` instead of `self.queryset` queryset = self.get_queryset() serializer = UserSerializer(queryset, many=True) return Response(serializer.data)
特別簡單的狀況下還能夠經過`.asview()方法傳遞任何類屬性iview
url(r'^/users/', ListCreateAPIView.as_view(queryset=User.objects.all(), serializer_class=UserSerializer), name='user-list')
如下屬性控制基本視圖行爲。post
1. `queryset` - 爲今後視圖中返回的對象的查詢集, 一般必需設置.若是要覆蓋此視圖,須要調用`get_queryset()`方法 2. `serializer_class` - 用於驗證和反序列化輸入以及序列化輸出的序列化程序類。一般,您必須設置此屬性,或覆蓋該`get_serializer_class()`方法。 3. `lookup_field` - 應該用於執行單個模型實例的對象查找的模型字段。默認爲'`pk`'。請注意,使用超連接的API時,您須要確保雙方的API意見和串行類設置查找字段,若是你須要使用一個自定義值。 4. `lookup_url_kwarg` - 應該用於對象查找的URL關鍵字參數。URL conf應包含與此值對應的關鍵字參數。若是未設置,則默認使用與之相同的值`lookup_field`。
mixin類提供用於提供基本視圖行爲的操做。請注意,mixin類提供了操做方法,而不是直接定義處理程序方法,例如.get()和.post()。這容許更靈活的行爲組合。url
mixin類能夠從中導入rest_framework.mixins
。rest
LisrModelMixin - 提供一種.list(request, *args, **kwargs)實現列出查詢集的方法。 CreateModelMixin - 提供.create(request, *args, **kwargs)實現建立和保存新模型實例的方法。 RetrieveModelMixin - 提供一種.retrieve(request, *args, **kwargs)方法,該方法實如今響應中返回現有模型實例。 UpdateModelMixin - 提供一種.update(request, *args, **kwargs)方法,用於實現更新和保存現有模型實例。 DestoryModelMixin - 提供.destroy(request, *args, **kwargs)實現刪除現有模型實例的方法。
在混入類的基礎上進行封裝, 若是不須要大量的自定義行爲,能夠從中導入視圖rest_framework.generics
。code
用於僅建立端點。 提供post方法處理程序。
用於只讀端點以表示模型實例的集合。 提供get方法處理程序。
用於只讀端點以表示單個模型實例。 提供get方法處理程序。
用於單個模型實例的僅更新端點。 提供put和patch方法處理程序。
用於讀寫端點以表示模型實例的集合。 提供get和post方法處理程序。
用於讀取或更新端點以表示單個模型實例。 提供get,put而且patch方法處理。
用於讀取或刪除端點以表示單個模型實例。 提供get和delete方法處理程序。
用於讀寫 - 刪除端點以表示單個模型實例。 提供get,put,patch和delete方法處理。
若是您在多個視圖中使用mixin,則能夠更進一步,建立本身的一組基本視圖,而後能夠在整個項目中使用。例如:對象
class BaseRetrieveView(MultipleFieldLookupMixin, generics.RetrieveAPIView): pass class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin, generics.RetrieveUpdateDestroyAPIView): pass
https://img2018.cnblogs.com/blog/1479869/201901/1479869-20190114220105178-568867006.png