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

Django DRF 分页的更多相关文章

  1. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  2. drf 分页,获取fk,choise,m2m等字段数据(序列化)

    1.什么是restful规范 是一套规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的的是,以前写增删改查需要写4个接口,restful规范的就是1个接口,根据method的 ...

  3. django DRF理解

    django restframework(DRF) 最近的开发过程当中,发现restframework的功能很强大,所以尝试解读了一下源码,写篇博客分享给大家,有错误的地方还请各位多多指出 视图部分 ...

  4. 第二十一章 Django的分页与cookie

    第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...

  5. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  6. Django----列表分页(使用Django的分页组件)

    目的:是为了实现列表分页 1.定制URL http://127.0.0.1:8000/blog/get_article?page=3之前定制URL是在url后增加了/id,这次使用参数的方式 def ...

  7. 解决Django + DRF:403 FORBIDDEN:CSRF令牌丢失或不正确,{"detail":"CSRF Failed: CSRF cookie not set."}

    我有一个Android客户端应用程序尝试使用Django + DRF后端进行身份验证.但是,当我尝试登录时,我收到以下响应: 403: CSRF Failed: CSRF token missing ...

  8. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  9. Django自定义分页并保存搜索条件

    Django自定义分页并保存搜索条件 1.自定义分页组件pagination.py import copy class Pagination: def __init__(self, current_p ...

随机推荐

  1. 我要进大厂之大数据MapReduce知识点(1)

    01 我们一起学大数据 老刘今天分享的是大数据Hadoop框架中的分布式计算MapReduce模块,MapReduce知识点有很多,大家需要耐心看,用心记,这次先分享出MapReduce的第一部分.老 ...

  2. mysql 重要日志文件总结

    作者:丁仪 来源:https://chengxuzhixin.com/blog/post/mysql_zhong_yao_ri_zhi_wen_jian_zong_jie.html 日志是所有应用的重 ...

  3. FL Studio CPU面板讲解

    在FL Studio中,其CPU面板主要是由CPU使用表.内存使用表和复音数这几个部分组成的.这些对刚接触这款音乐制作软件的同学来说是非常陌生的吧!因为不知道这些是什么,主要的作用是什么.所以小编这里 ...

  4. (转)React学习笔记(干货满满)

    1. React 长什么样 React 是 facebook 开源出来的一套前端方案,官网在 https://reactjs.org . 先看一个简单的样子: <!DOCTYPE html> ...

  5. python 安装第三方库

    找到找到C:\Windows\System32下面的cmd.exe,   以管理员方式运行cmd.exe cd 到自己安装的python目录,这里举个例子      C:\Program Files ...

  6. Cloud-Native! 实战 Helm 3 部署 Traefik 2

    介绍 Traefik 是什么? Traefik, The Cloud Native Edge Router Traefik 是一种现代 HTTP 反向代理和负载均衡器,用于轻松部署微服务. 这篇文章对 ...

  7. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人

    [NOIP2017提高A组模拟9.17]信仰是为了虚无之人 Description Input Output Sample Input 3 3 0 1 1 7 1 1 6 1 3 2 Sample O ...

  8. day4(JWT安装配置)

    1.JWT安装配置  1.1安装JWT pip install djangorestframework-jwt==1.11.0 1.2 syl/settings.py配置jwt载荷中的有效期设 # j ...

  9. PyQt(Python+Qt)学习随笔:windows下使用pyinstaller将PyQt文件打包成exe可执行文件

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<windows下使用pyinstaller将多个目录的Pyt ...

  10. PyQt(Python+Qt)学习随笔:QTreeView树形视图的expandsOnDoubleClick属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的expandsOnDoubleClick属性用于控制鼠标双击是否展开或折 ...