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. cookie和session的关系和区别

    1.为什么会用到cookie和session 由于http请求是一种无状态的请求,一旦数据交换完毕便会关闭请求,再次交换数据则要再次发起请求,所以服务端无法通过连接追踪会话,确定用户身份,而cooki ...

  2. configure.ac和Makefile.am的格式解析概述

    1. configure.ac和Makefile.am的格式解析概述 1.1. Autotools相关工具链 1.1.1. Autotools 1.1.2. 其他相关工具 1.2. 工具链的流程 1. ...

  3. 史上最全!2020面试阿里,字节跳动90%被问到的JVM面试题(附答案)

    前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去.这不他来了,一份详细的JVM面试真题给大 ...

  4. Camtasia制作视频分割与视频拼接

    视频的分割与拼接是在制作和编辑视频中经常用到的方法,运用Camtasia视频编辑器能够让视频制作更加的简单和便捷.Camtasia是一款录频软件和视频编辑器,可以进行屏幕录制.拖放视频等操作.小编采用 ...

  5. python ddt实现数据驱动

    首先安装ddt模块,命令:pip install ddt 通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或 ...

  6. [CF1454] Codeforces Round #686 (Div. 3) solution

    标签(空格分隔): 经验 题解 时量 : 2h 概括 : \[\text{2min t1 }\\ \text{10min t2 (hacked)}\\ \text{30min t3 }\\ \text ...

  7. Eclipse的环境配置

    1.想要配置Eclipse的环境,就要先下载Eclipse,并安装它,不会下载安装的小伙伴可以点击下面给的链接,里面有我写的详细的教程,这里就不重复了 Eclipse下载与安装:https://blo ...

  8. 在iOS中使用ZBar扫描二维码和条形码

    最近做了个外包项目,里面用到了二维码扫描和微信支付!之前比较熟悉的是ZXing,但是在Xcode7.1里面发现竟然莫名的不支持,木有办法,从网上查了一下还有一种支持二维码扫描的东西,没错就是接下来我要 ...

  9. [BUGCASE]Webpack打包报JavaScript堆内存泄漏的错误

    一.问题描述 执行npm run build之后报错: 报错信息: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript he ...

  10. ubuntu配置网络和静态路由(界面配置形式)

    目录 网卡配置 静态ip配置 静态路由 外网ip配置(动态获取DHCP) 内网ip和静态路由配置 本文主要针对ubuntu18.0系统进行界面形式配置网络.并配置静态路由. 网卡配置 静态ip配置 打 ...