zoukankan      html  css  js  c++  java
  • DRF 分页

    PageNumberPagination

    • Settings.py文件
    REST_FRAMEWORK = {
        "PAGE_SIZE":2
    }
    
    • views.py
    from rest_framework.pagination import PageNumberPagination
    from rest_framework import serializers
    
    #### 要在settings配置文件中设置REST_FRAMEWORK = {"PAGE_SIZE":2} 参数来启动分页和设置每页数据数量,默认是不启用分页的。
    
    class PagSerializers(serializers.ModelSerializer):
        class Meta:
            model = models.Article
            fields = '__all__'
    
    
    class PagArticle(APIView):
        """ 方式一:分页仅获取数据
        def get(self,request,*args,**kwargs):
            queryset = models.Article.objects.all()
            page_object = PageNumberPagination()
            result = page_object.paginate_queryset(queryset,request,self)
            ser = PagSerializers(instance=result,many=True)
            return Response(ser.data)
        """
    
        """ 方式二:分页数据+分页信息
        def get(self,request,*args,**kwargs):
            queryset = models.Article.objects.all()
            page_object = PageNumberPagination()
            result = page_object.paginate_queryset(queryset,request,self)
            ser = PagSerializers(instance=result,many=True)
            return page_object.get_paginated_response(ser.data)
        """
    
        """ 结果示例输出
        {
        "count": 6,
        "next": "http://127.0.0.1:8000/page/article/?page=3",
        "previous": "http://127.0.0.1:8000/page/article/",
        "results": [
            {
                "id": 6,
                "title": "xxx科技有限公司",
                "summary": "贼拉厉害",
                "content": "光明正大的吃霸王餐",
                "status": 1,
                "cates": 3,
                "tag": [
                    2
                ]
            }
            ]
        }
        """
    
        ### 方式三:自定制
        def get(self, request, *args, **kwargs):
            queryset = models.Article.objects.all()
            page_object = PageNumberPagination()
            result = page_object.paginate_queryset(queryset, request, self)
            ser = PagSerializers(instance=result, many=True)
            return Response({"count": page_object.page.paginator.count, "results": ser.data})
    

    访问URL要求:http://api.example.org/accounts/?page=1

    LimitOffsetPagination

    Views.py

    from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination
    from rest_framework import serializers
    
    class PagSerializers(serializers.ModelSerializer):
        class Meta:
            model = models.Article
            fields = '__all__'
    
    class PagArticle(APIView):
        def get(self,request,*args,**kwargs):
            queryset = models.Article.objects.all()
            page_object = LimitOffsetPagination()
            result = page_object.paginate_queryset(queryset,request,self)
            ser = PagSerializers(instance=result,many=True)
            return Response(ser.data)
    

    访问URL要求:http://api.example.org/accounts/?offset=400&limit=100

  • 相关阅读:
    css样式学习笔记
    Css教程玉女心经版本
    weblogic高级进阶之ssl配置证书
    weblogic高级进阶之查看日志
    weblogic之高级进阶JMS的应用
    【WebLogic使用】3.WebLogic配置jndi数据源
    shiro的helloworld
    尚硅谷spring 事物管理
    尚硅谷spring aop详解
    Spring Boot 2.x Redis多数据源配置(jedis,lettuce)
  • 原文地址:https://www.cnblogs.com/os-linux/p/11815367.html
Copyright © 2011-2022 走看看