2022-10-10 10:43阅读: 27评论: 0推荐: 0

GenericAPIView 简单使用

list

APIView

class DemoView(APIView):
    def get(self, request):
        queryset = models.UserInfo.objects.all()
        pager = PageNumberPagination()
        result = pager.paginate_queryset(queryset, request, self)
        ser = DemoModelSerializer(instance=result, many=True)
        response = pager.get_paginated_response(ser.data)
        return response

GenericAPIView

from rest_framework.generics import GenericAPIView

class Demo1View(GenericAPIView):
    queryset = models.UserInfo.objects.all()
    serializer_class = DemoModelSerializer
    pagination_class = PageNumberPagination

    def get(self, request):
        queryset = self.get_queryset()
        result = self.paginate_queryset(queryset)
        ser = self.get_serializer(intance=result, many=True)
        response = self.get_paginated_response(ser.data)
        return response

单个

APIView

class DemoDetailView(APIView):
    def get(self, request, pk):
        queryset = models.UserInfo.objects.get(pk=pk)
        ser = DemoModelSerializer(instance=queryset, many=False)
        return Response(ser.data)

过滤类

from rest_framework.filters import BaseFilterBackend

class MyFilterBackend(BaseFilterBackend):

    def filter_queryset(self, request, queryset, view):
        # 在此做筛选
        return queryset

GenericAPIView

from rest_framework.generics import GenericAPIView

class Demo1DetailView(GenericAPIView):
    queryset = models.UserInfo.objects.all()
    serializer_class = DemoModelSerializer
    pagination_class = PageNumberPagination
    filter_backends = [MyFilterBackend, ]
    def get(self, request, pk):
        # 查询+校验权限
        queryset = self.get_object()
        ser = self.get_serializer(instance=queryset)
        return Response(ser.data)

本文作者:Sherwin

本文链接:https://www.cnblogs.com/sherwin1995/p/16774829.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Sherwin_szw  阅读(27)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.