Django REST framework (十二)分页以及自定义分页

  • A+
所属分类:python基础

1.使用传统的全局分页

REST_FRAMEWORK = {
    'PAGE_SIZE':10,  #默认分页大小
   'DEFAULT_PAGINATION_CLASS':"rest_framework.pagination.PageNumberPagination",#设置所有视图默认分页函数,设置了其他视图可以不设置
}

views设置

from rest_framework.pagination import PageNumberPagination
class IP_View(viewsets.ModelViewSet):
    """
    retrieve:
        列出一个主机
    list:
        列出主机清单

    """
    queryset = IP.objects.all()
    serializer_class = ip_serializer
    #pagination_class = PageNumberPagination  #如果setting设置了default可以不设置

访问http://127.0.0.1:8000/ip/?page=2 里面返回下一页,总共多少数据

Django REST framework (十二)分页以及自定义分页

?page_size=20 这类有问题,需要从写方法,然后setting或者view设置这个方法

from rest_framework.pagination import PageNumberPagination

class GlobalPageNumberPagination(PageNumberPagination):
    def __init__(self):
        super(GlobalPageNumberPagination, self).__init__()
        self.page_size_query_param = 'page_size'
        self.max_page_size = 1000  # 这个设置很重要

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: