Django-rest-framework 接口实现 分页:(Pagination) 解析器(Parser) 渲染器(renderer)

本文详细介绍了Django Rest Framework(DRF)中的三种分页模式:PageNumberPagination、LimitOffsetPagination和CursorPagination,包括如何自定义分页类以及配置全局和局部分页。同时,文章还提到了解析器和渲染器的配置。

分页:(Pagination)

rest_framework 中已经定义好了 3 种 分页模式

from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination

当有特殊的配置需要代替默认的配置时,我们就自己写个类

  • 继承要使用的分页模式
在单独的视图中定义分页

一些配置:

  • PageNumberPagination

    from rest_framework.pagination import PageNumberPagination
    class MyPagination(PageNumberPagination):
      ''' 修改一些默认参数 '''
        page_size = 1  # 每页显示多少条
        page_size_query_param = 'size'  # 每页显示多少条的参数key
        page_query_param = 'page'  # URL中页码的参数
        max_page_size = None  # 最大页码数限制
  • LimitOffsetPagination

    class MyLimitOffset(LimitOffsetPagination):
        # 默认参数
        default_limit = 1  
        limit_query_param = 'limit'
        offset_query_param = 'offset'
        max_limit = 999
  • CursorPagination

    # 加密分页
    class MyCursorPagination(CursorPagination):
        cursor_query_param = 'cursor'
        page_size = 1
        ordering = '-id'  # 重写要排序的字段

注意:

  • queryset切片之后不能 order_by()

配置:

全局配置:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    # 每页显示 的条数   不指定的话  会出现  warning(警告)信息
    'PAGE_SIZE': 100
}

局部配置

  pagination_class = PageNumberPagination

解析器(Parser) 和 渲染器(renderer)

配置: 一般不需要配置 使用自己默认的就行

  # 解析器
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser'
    ),

    # 渲染器
    # 你要页面 我就给你页面
    # 你要JSON格式的数据 我就给你JSON格式的数据
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        # 'rest_framework.renderers.BrowsableAPIRenderer',
    ),

转载于:https://www.cnblogs.com/zhang-zi-yi/p/10447390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值