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. Matlab项目经验分享-去除震荡点

    Matlab是做科研是比较常用的建模工具,我在研一做项目期间遇到了一个还算比较基础的问题,所以我打算记录下来并分享出来! 处理问题步骤: 1. 抛出问题 2. 思考解决方法 3. 代码验证看结果 抛出 ...

  2. kali 系列学习05 - Nessus 安装及配置

    Nessus 安装 1.https://www.tenable.com/products/nessus/select-your-operating-system    点此下载nessus选择适合自己 ...

  3. Earmaster——音乐爱好者必备软件

    有很多喜爱音乐但是却由于一些"不可抗力"而没能学习到音乐基础的小伙伴,相信你们在自学乐器或是声乐的时候总会因为基础不扎实而看不懂一些复杂的乐谱,换别的曲子练习之后发现依旧看不懂,由 ...

  4. 【ubuntu】搭建mysql5.7

    一.安装mysql (一) 安装mysql 注意别安装8,8配置太高了 $: sudo apt-get install mysql-server or $: sudo apt-get install ...

  5. Codeforces Round #488 by NEAR (Div. 2)

    A 开个桶记录是否出现即可. 时间复杂度 \(O\left(n+m\right)\). B 按能力值从小到大依次加入,然后维护前 \(k\) 大的金币数即可. 时间复杂度 \(O\left(n\log ...

  6. P3287 [SCOI2014]方伯伯的玉米田

    首先可以证明,一定存在一种最优解,每次选择的区间结尾都是 \(n\).因为如果某一个区间结尾不是 \(n\),将其替换成 \(n\) 仍然保持单调不下降.接着都按这个策略拔高玉米. 令 \(f_{i, ...

  7. 一周一个中间件-hbase

    前言 hbase是大数据的生态的一部分,是高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.介于nosql和RDBMS之间.主要存储非结构化和半结构化的松散数据. 海量数据存储 快速随机访问 大 ...

  8. python 网络并发 :理论部分

    1.今日内容大纲 进程的介绍(理论部分) 进程的创建以及分析 获取进程的pid 进程之间的隔离 1.进程的介绍(理论部分) 1.1什么是进程 一个正在被cpu执行的程序就是一个进程,一个程序可以开启多 ...

  9. IdentityServer4系列 | 简化模式

    一.前言 从上一篇关于资源密码凭证模式中,通过使用client_id和client_secret以及用户名密码通过应用Client(客户端)直接获取,从而请求获取受保护的资源,但是这种方式存在clie ...

  10. 小bug小坑总结

    1. 小程序canvas那些原生组件的层级默认是最高的,而且不能更改,平常的div弹框什么的上面就会显示出原生组件的内容, 解决办法:cover-view,cover-image,button 2. ...