zoukankan      html  css  js  c++  java
  • rest_framework-分页

    分页

    from django.shortcuts import render
    
    # Create your views here.
    
    from rest_framework import serializers
    from rest_framework.views import APIView
    from .models import *
    from rest_framework.response import Response
    from rest_framework.pagination import PageNumberPagination
    
    
    class MySerializer(serializers.ModelSerializer):
        class Meta:
            model = Roles
    
            fields = '__all__'
    
    
    class MyPagination(PageNumberPagination):
        page_size = 1
        page_query_param = 'page'
        page_size_query_param = 'page_size'
        max_page_size = 50
    
    
    class MyView(APIView):
    
        def get(self, request, *args, **kwargs):
            queryset = Roles.objects.all()
            pagers = MyPagination()
            instance = pagers.paginate_queryset(queryset, request, self)
            serializer = MySerializer(instance=instance, many=True)
            return Response(serializer.data)
    
    • PageNumberPagination:需要在rest-framework的setting配置:'PAGE_SIZE'
    • 使用
      • 先实例化一个分页对象
      • 调用实例化对象的paginate_queryset方法,这个方法接受3个参数,查询的queryset对象,request,view
      • 序列化
      • 返回
    • 自定义分页对象
      • 需继承PageNumberPagination
      • 设置默认的page_size
      • page_query_param: 设置该参数,可以从url的参数里面获取请求页数
      • page_size_query_param: 设置该参数,可以从url的参数里面获取请求页数大小
      • max_page_size: 设置该参数,限制一页请求的大小,防止恶意请求
  • 相关阅读:
    在java中请求webservice接口并且处理xml解析实现代码
    uniapp微信小程序唤起微信支付
    微信二维码图片添加资料
    uniapp支付宝App支付编写(沙箱支付)
    Java之xlsx文件上传到服务器
    echarts中国省份坐标数据
    kafka参数配置
    docker
    mysql 异步复制,半同步复制
    centos7安装mysql
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11655310.html
Copyright © 2011-2022 走看看