REST framework:分页

news/2024/11/16 9:00:31/文章来源:https://www.cnblogs.com/Durant0420/p/18377585

REST framework提供了分页的支持

一、全局配置(不建议使用)

在配置文件中设置全局的分页方式:

REST_FRAMEWORK = {'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.PageNumberPagination','PAGE_SIZE': 10  # 每页数据量
}

二、局部配置

在不同的视图中可以通过pagination_clas属性来指定不同的分页器

1、自定义分页器

定义一个继承PageNumberPagination的类型,在子类中通过属性定义分页器的数据:

  • page_size 每页默认的数据条数
  • page_query_param 前端发送的页数关键字名,默认为"page"
  • page_size_query_param 前端发送的每页数目关键字名,默认为None
  • max_page_size 每页最多的数据条数
from rest_framework.pagination import PageNumberPaginationclass UserInfoPagination(PageNumberPagination):# 默认每页数据量page_size = 10page_query_param = 'page'page_size_query_param = 'size'# 每页的数据量的最大值max_page_size = 100

2、使用分页器

class UserView(ModelViewSet):# 指定模型类查询集queryset = UserInfo.objects.all()# 指定序列化器类serializer_class = UserInfoSerializer# 指定分页器类pagination_class = UserInfoPagination

接口文档

 

postman查看

 

 

3、关闭分页功能

如果在视图内关闭分页功能,只需在视图内设置

pagination_class = None

 

三、分页器类型

1) PageNumberPagination
  • 前端访问网址形式:
    http://127.0.0.1:8000/students/?page=4

     

  • 子类中定义的属性:
    page_size 每页数目page_query_param 前端发送的页数关键字名,默认为"page"page_size_query_param 前端发送的每页数目关键字名,默认为Nonemax_page_size 前端最多能设置的每页数量
2)LimitOffsetPagination
  • 前端访问网址形式:
    http://127.0.0.1:8000/students/?limit=100&offset=400
    可以在子类中定义的属性:
    default_limit 默认限制,默认值与PAGE_SIZE设置一直limit_query_param limit参数名,默认'limit'offset_query_param offset参数名,默认'offset'max_limit 最大limit限制,默认None

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786527.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

052、Vue3+TypeScript基础,页面通讯之一个组件中多个v-model数据绑定

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

React 和 Vite 环境下 TailwindCSS 的配置指南

1. 安装tailwindcss npm install -D tailwindcss postcss autoprefixer2. 生成tailwindcss 配置文件 npx tailwind init -p3. tailwind.config.js 配置 /** @type {import(tailwindcss).Config} */ export default {content: ["./index.html","./src/**/*.{js,t…

051、Vue3+TypeScript基础,页面通讯之v-model在组件中手写实现

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

docker 修改容器内容后更新镜像的流程

在 Docker 中,如果你修改了一个容器的内容并希望将这些更改保存为一个新的镜像,可以按照以下步骤进行: docker version: 26.1 1. 确保容器运行 首先,确保你正在修改的容器是运行中的。如果容器已经停止,你需要启动它: docker start <container_id> 2. 进入容器并进…

REST framework:排序过滤器的使用

对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序 1、在setting中的REST_FRAMEWORK添加配置DEFAULT_FILTER_BACKENDS: (# 这个是指定使用django_filters中的过滤器来进行过滤django_filters.rest_framework.DjangoFilterBac…

AP5160 电压2.5-100V 电流12A PWM 调光 大功率LED驱动 手电筒与摩托车照明方案

产品描述 AP5160 是一款效率高,稳定可靠的 LED 灯恒流驱动控制芯片,内置高精度比较器,固定 关断时间控制电路,恒流驱动电路等,特别适合大功率 LED 恒流驱动。 AP5160采用SOT23-6封装,通过调节外置电流检测的电阻值来设置流过LED 灯的电流,从而设置LED灯的亮度,外驱 MOS…

解决方案 | VS2022 社区版 获取工具和功能找不到visual stdio安装程序的终极解决办法

首先这是一种解决方法: https://blog.csdn.net/Wysnbb/article/details/124588395其次,如果上面方法解决不了,那么可以重新下载vs 社区版。(不要误会,并不是下载10G+的东西) https://visualstudio.microsoft.com/zh-hans/vs/community/下载得到:安装VisualStudioSetup.e…

折腾 Quickwit,Rust 编写的分布式搜索引擎(专为从对象存储中实现亚秒级搜索而设计)

什么是 Quickwit? Quickwit 是首个能在云端存储上直接执行复杂的搜索与分析查询的引擎,并且具有亚秒级延迟。它借助 Rust 语言和分离计算与存储的架构设计,旨在实现资源高效利用、易于操作以及能够扩展到 PB 级数据量。 Quickwit 非常适合日志管理、分布式追踪以及通常为不可…

代码随想录day39 || 198 打家劫舍,213 打家劫舍||,337 打家劫舍|||

198 打家劫舍 func rob(nums []int) int {// 思路,动态规划// dp[i] 代表前下标为i能装的最大盗窃物品价值// 递推 dp[i] = max(dp[i-1], dp[i-2]+v(i)) // dp[i-1] 代表不偷物品i, dp[i-2]+v(i) 代表偷物品i,那么就不能偷i-1,因为题目要求不能相邻,所以考虑前i-2// dp[0]…

CF 做题笔记

在这个随笔中,会有笔者的一些 CodeForces 做题笔记,包括但不限于思想、解题技巧、代码实现等。CF1926G Vlad and Trouble at MIT \(\texttt{*1900}\)。TAG: \(\texttt{树形 dp}\) \(dp_{i,S,P}\) 为 \(i\) 的子树内是否存在 S 和 P 的状态。 转移方程为:当 \(s_i\) 为 C 时 …

VulNyx-Secrets

扫端口扫描80端口发现有个secrets目录 还有个注释继续扫发现http://192.168.200.11/secrets/login_form.php 有这个登录框 估计就是要爆破 username就是brad了把密码爆破出来 bradley登录完成后有跳转要我们写ip随便写个127.0.0.1 发现他只接受纯数字那我们就把ip转化成纯数字然…