Django-rest-framework 接口实现 分页:(Pagination) 解析器(Parser) 渲染器(renderer)
2024-10-18 21:24:05
分页:(Pagination)
rest_framework 中已经定义好了 3 种 分页模式
from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination
- PageNumberPagination
- 例如:http://127.0.0.1:8000/api/article/?page=2&size=1
- 通过页码数进行分页
- LimitOffsetPagination
- 例如:http://127.0.0.1:8000/api/article/?offset=2&limit=2
- 通过起始 结束 分页
- 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',
),
最新文章
- 伟大的GCD和NSOperationQueue
- Linux下多路径multipath配置
- Sql Server 与CLR集成
- 安装sql server 2008 management studio时,提示升级VS2008 到 SP1
- 读书笔记——Java IO
- kettle表输入条件参数设置
- jerasure 2.0译文
- flask 操作mysql的两种方式-sql操作
- Feign报错Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client
- ubuntu14.04拼音输入法问题的解决方法
- Kestrel.Transport.Sockets分析与使用
- HTTP协议是无状态的
- Jenkins解析日志(log-parser-plugin)
- 【转】配置不当引起高危漏洞?看加密货币交易所如何正确用Spring Boot Actuaotr框架
- RAND_MAX
- MongoDB(课时4 数据增加)
- JavaWeb基础—Servlet
- c#实现统计代码运行时间
- Visual Studio Code Angular4 配置环境
- 深入理解 flex 布局以及计算_Flexbox, Layout