1. 程式人生 > >python-django rest framework框架之視圖

python-django rest framework框架之視圖

man 頁碼 update remove set ner str d+ mixin

視圖  :常用 1和4 兩種
        1. 原始的APIView
            class IndexView(views.APIView):
                def get(self, request, *args, **kwargs):
                    user_list = models.UserInfo.objects.all()
                    ser = IndexSerializer(instance=user_list,many=True)
                    return Response(ser.data)
        
        
2. GenericAPIView(APIView) 裏面實現了一些雞肋的方法,沒什麽用 3. GenericViewSet(ViewSetMixin, generics.GenericAPIView) :在url中標註什麽請求方法執行什麽函數 路由修改: urlpatterns = [ url(r^index/$, views.IndexView.as_view({get:list,post:create})), url(r
^index/(?P<pk>\d+)$, views.IndexView.as_view({get:retrieve,delete:remove})), ] 視圖修改: class IndexView(viewsets.GenericViewSet): def list(self,request,*args,**kwargs):
pass # 獲取列表信息 def retrieve(self, request, *args, **kwargs): pass # 獲取單條數據 def create(self,request, *args, **kwargs): pass 以前不用GenericViewSet的方式: 增 POST /users/ 刪 DELETE /users/1/ 改 PUT 全部修改 /users/1/ patch 局部修改 /users/1/ 查 GET 全部數據 /users/ GET 一條數據 /users/1/ urlpatterns = [ url(r^index/$, views.IndexView.as_view()), url(r^index/(?P<pk>\d+)$, views.IndexView.as_view()), ] class IndexView(views.APIView): def get(self,request,*args,**kwargs): pk = kwargs.get(pk) if pk: pass # 獲取單條信息 else: pass # 獲取列表信息 def post(self,request,*args,**kwargs): pass def put(self,request,*args,**kwargs): pass def patch(self,request,*args,**kwargs): pass def delete(self,request,*args,**kwargs): pass 4.ModelViewSet(mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.UpdateModelMixin,mixins.DestroyModelMixin,mixins.ListModelMixin,GenericViewSet) #繼承了 增刪改查+局部更新+GenericViewSet from rest_framework.pagination import LimitOffsetPagination,PageNumberPagination,CursorPagination from rest_framework import viewsets from api import models from api.serializers.index import IndexSerializer class P2(PageNumberPagination): # 每頁顯示的數據條數 max_page_size = 5 page_size = 2 page_size_query_param = size # 頁碼 page_query_param = page class IndexView(viewsets.ModelViewSet): #也可以不繼承ModelViewSet,繼承上面那些類中的幾個,就只有某幾個方法了 queryset = models.UserInfo.objects.all() serializer_class = IndexSerializer pagination_class = P2 #也可以自定制方法 # def list(self, request, *args, **kwargs): # pass # def retrieve(self, request, *args, **kwargs): # pass

python-django rest framework框架之視圖