首页
学习
活动
专区
圈层
工具
发布

Django Rest Framework 分页(下)

Django Rest Framework 分页(中)

一、使用加密分页

使用加密分页的原因:如果使用普通分页时,由于向用户提供了可选参数 page,用户可以直接跳到数据分页之后的任意页码。但是这样做的后果就是,数据库的负载变大,返回结果的效率缓慢。但是一旦使用加密之后,虽然提供可选参数 cursor,但是对页码进行加密,用户无法知道当前页,而是以上一页下一页的方式翻阅数据。有效避免了数据库的负荷。但是就需要向用户提供上一页下一页的 url。

① 自定义分页类

  • default_limit:表示默认每页显示几条数据;
  • cursor_query_param:表示 url 中页码的参数;
  • page_size_query_param:表示每页显示数据量的参数;
  • max_page_size:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃;
  • ordering:表示返回数据的排序方式

② 视图

  • 首先需要实例化定义的分页类
  • 并且对实例化类进行传参控制
  • 最后将分页后的对象作序列化
  • 由于要给用户提供可用的上下页接口,所以只能用 return page.get_paginated_response(roles_ser.data) 做返回。

二、总结

三种分页中 Django Rest Framework 分页(上),普通分页与 django 中的分页基本没有区别。不过要做分页返回给前端数据,就要从数据库中取出数据,然后再做分页序列化。如果用户一下在前几页请求数据库中的最后几页数据,对查询数据库的延时,对数据库的负载较大,就会出现问题,这个时候就可以使用加密分页,限制用户的访问,只提供前一页和后一页的接口。

下一篇
举报
领券