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. 运维自动化之11 - 自动化部署之jenkins及简介

    https://www.cnblogs.com/jimmy-xuli/p/9020825.html

  2. addslashes()

    addslashes() 函数返回在预定义字符之前添加反斜杠的字符串. 作用:防止sql注入

  3. CSP2020 游记

    Day -28 后天就初赛了,考了一套模拟题,自闭,心态爆炸,感觉退役不远了 Day -26(初赛) 香农是谁??? 手写随机nth_element与O(n)的哈希表??? 阅读程序T2时间复杂度分析 ...

  4. Word2 word输入公式+文字转表格

    1.word中输入 =rand() -点击回车键-会随机生成一段文字-可用作排版练习/虚拟的文字排版设计 ##也可以为=rand(2,3)等,括号里可以随即填写其他数字,最后生成文字字数等不一样 2. ...

  5. 浅谈树链剖分 F&Q

    这是一篇迟来的博客,由于我懒得写文章,本篇以两个问题阐述笔者对树链剖分的初步理解. Q1:树链剖分解决什么问题? 树链剖分,就是把一棵树剖分成若干连续的链,将这些链里的数据映射在线性数组上维护.比方说 ...

  6. java多线程--【Foam番茄】

    进程 是系统资源分配的单位 线程 通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义.线程是cpu调度和执行的单位 注意:很多多线程是模拟出来的,真正的多线程是指有多 ...

  7. 实用主义当道——GitHub 热点速览 Vol.48

    作者:HelloGitHub-小鱼干 当你看到实用为本周的关键词时,就应该知道本周的 GitHub 热点霸榜的基本为高星老项目,例如:知名的性能测试工具 k6,让你能在预生产环境和 QA 环境中以高负 ...

  8. MiniUI日期选择框MonthPicker英文修改为中文

    一.详细内容及解决方案 正常MIniUI的MonthPicker中的月份和星期默认是英文的,我百度搜索关于这个问题的博客少之又少,下面说下解决办法,非常简单. <input id="d ...

  9. PriorityQueue 优先队列的实现

    PriorityQueue 的 implementation PriorityQueue即是优先队列.通俗的说就是体育课的时候老师要求从高到低排序,老师能直接一眼看出谁是最高的在班级里.当这个最高的离 ...

  10. PyQt(Python+Qt)学习随笔:QScrollArea滚动区域的alignment属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 滚动区域的alignment属性对应QScrollArea的alignment属性,用于控制滚动区域 ...