一.使用默认分页

1.settings 设置
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 2
}
2.参数
  • 1.第几页
    # Client can control the page using this query parameter.
page_query_param = 'page'
page_query_description = _('A page number within the paginated result set.')
  • 2.每页大小
    # Client can control the page size using this query parameter.
# Default is 'None'. Set to eg 'page_size' to enable usage.
page_size_query_param = None
page_size_query_description = _('Number of results to return per page.')
  • 3.最大页
    # Set to an integer to limit the maximum page size the client may request.
# Only relevant if 'page_size_query_param' has also been set.
max_page_size = None

二.自定义分页

avue 前端分页参数:

# 前端很喜欢用 data,把 result 改成 data
{ "total": 40, "pagerCount": 5, "currentPage": 1, "pageSize": 20, "pageSizes": [ 10, 20, 30, 40, 50, 100 ], "background": true }
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
from collections import OrderedDict, namedtuple class LargeResultsSetPagination(PageNumberPagination):
page_query_param = 'pagerCount'
page_query_description = '当前第几页'
page_size = 20
page_size_query_param = 'pageSize'
page_size_query_description = '每页条目数'
max_page_size = 100 def get_paginated_response(self, data):
return Response(OrderedDict([
('total', self.page.paginator.count),
('next', self.get_next_link()),
('previous', self.get_previous_link()),
('data', data)
])) # settings
REST_FRAMEWORK = {
# 指定用于支持coreapi的Schema
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
'DEFAULT_PAGINATION_CLASS': 'utils.utils.LargeResultsSetPagination',
'PAGE_SIZE': 10,
}

结果如下

{
"total": 104,
"next": "http://127.0.0.1:8000/idcs/?pageSize=1&pagerCount=5",
"previous": "http://127.0.0.1:8000/idcs/?pageSize=1&pagerCount=3",
"data": [
{
"id": 4,
"name": "华为机房0",
"address": "神州路0号大院",
"phone": "13412345678",
"email": "mail_0@com.cn",
"letter": "hw0"
}
]
}

如果某个视图不需要分页,视图设置分页类为 None 即可

pagination_class = None

最新文章

  1. OpenGL渲染流程
  2. Hadoop HDFS负载均衡
  3. jquery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
  4. css3之多列
  5. Android基于mAppWidget实现手绘地图(二)--概要
  6. 移动web开发框架
  7. 用fabric部署维护kle日志收集系统
  8. js sleep效果
  9. 【IE】浏览器模式与文档模式 及其开发中处理方式
  10. Webbrowser控件史上最强技巧全集
  11. NJCTF 极少部分wp
  12. Servlet--HttpServlet类
  13. Spring的学习和源码的学习
  14. STL——map/unordered_map基础用法
  15. Linux 禁ping和开启ping操作
  16. 给出一个十六进制的数0xFF 0x80 (只有2“位”) 将其转换成有符号的一字节的十进制整数
  17. 配置 Mysql 支持远程访问 并取消域名解析以提高链接速度
  18. memcpy实现
  19. Net下的 ORM框架介紹(转)
  20. hive 2以上版本启动异常 Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

热门文章

  1. 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10
  2. Get on the CORBA
  3. Java反射与注解
  4. Ubuntu上安装配置Java环境
  5. 递归与N皇后问题
  6. C++类学习(2)
  7. 在Jetson TX2上显示摄像头视频并使用python进行caffe推理
  8. P3306 [SDOI2013]随机数生成器(bzoj3122)
  9. pyhton中绘制多个图像
  10. vue 比 js的强大