• Django DRF 分页


    Django DRF 分页

    分页在DRF当中可以一共有三种,可以通过setttings设置,也可也通过自定义设置

    PageNumberPagination

    使用URL http://127.0.0.1/CarApi/?page=2&page_size=2
    

    这种分页是按照页码和每页条数进行分页的,需要指定页码和每页条数

    常用参数

    方法 描述
    page_size 每页数据条数,默认位空,如果settings当中设置了,价值settings当中的配置
    django_paginator_class 采用的django分页器
    page_query_param 页码参数字段
    page_query_description 页码描述
    page_size_query_param 页最大显示条数字段
    page_size_query_description 分页

    settings配置

    在settings当中编写配置,填入对应的内容

    REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.PageNumberPagination',
        'PAGE_SIZE': 10  # 每页数目
    }
    

    这种方法会对当前项目所有的展示生效,如果单个视图需要关闭,可以进行单独设置:

    pagination_class = None
    

    自定义配置

    from rest_framework.pagination import PageNumberPagination
    
    class CarPageNumberPagination(PageNumberPagination):
        page_query_param = "page"
        page_size_query_param = 'page_size' #前端收到页面的关键字名称,默认是page
        max_page_size = 10 #每页数据个数
    
    
    class CarViewSet(viewsets.ModelViewSet):
        queryset = Tc.objects.order_by("-id")
        serializer_class = CarSerializers
        pagination_class = CarPageNumberPagination
    

    LimitOffsetPagination

    http://127.0.0.1/CarApi/?limit=20&offset=0
    

    这种分页方法需要设置分页起始数据位置(offset),数据偏移的量(limit)

    常用参数

    方法 描述
    default_limit 默认每页
    limit_query_param 在路由上偏移字段的名称默认是limit
    limit_query_description 关于偏移的描述
    offset_query_param 分页起始位置的名称,默认是offset
    offset_query_description 分页起始位置的描述
    max_limit 最大偏移量限制

    settings配置

    在settings当中编写配置,填入对应的内容

    REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.LimitOffsetPagination',
        'PAGE_SIZE': 10  # 每页数目
    }
    

    这种方法会对当前项目所有的展示生效,如果单个视图需要关闭,可以进行单独设置:

    pagination_class = None
    

    自定义配置

    from rest_framework.pagination import LimitOffsetPagination
    
    class CarPageNumberPagination(LimitOffsetPagination):
        max_limit = 10 #最大偏移量限制
    
    
    
    class CarViewSet(viewsets.ModelViewSet):
        queryset = Tc.objects.order_by("-id")
        serializer_class = CarSerializers
        pagination_class = CarPageNumberPagination
    

    CursorPagination

    加密分页,对上下页页码进行了加密

    http://127.0.0.1/CarApi/?cursor=cD0zMjgzMTgx
    

    常用参数

    方法 描述
    cursor_query_param 页码参数
    cursor_query_description 页码描述
    page_size 每页数据
    invalid_cursor_message 分页起始位置的名称,默认是offset
    ordering 排序,必须设置,否则会报错
    page_size_query_param 页面数据条数设置

    settings配置

    由于没有找到排序的参数替代品,所以,暂时没有找到方法。

    自定义配置

    class CarPageNumberPagination(CursorPagination):
        cursor_query_param = 'cursor'
        page_size = 10
        ordering = '-id'
    
    
    class CarViewSet(viewsets.ModelViewSet):
        queryset = Tc.objects.order_by("-id")
        serializer_class = CarSerializers
        pagination_class = CarPageNumberPagination
  • 相关阅读:
    14_部署LNMP环境、构建LNMP平台、地址重写
    13_搭建Nginx服务器、配置网页认证、基于域名的虚拟主机、ssl虚拟主机
    12_rsync+SSH同步
    11_DNS子域授权、分离解析、缓存DNS服务器
    10_自定义yum仓库、源码编译安装
    09_parted分区工具、交换分区、链路聚合
    08_简单MariaDB数据库的管理
    bzoj1396
    bzoj4154
    bzoj3489
  • 原文地址:https://www.cnblogs.com/bianjinhui/p/14145360.html
Copyright © 2020-2023  润新知