方法一:

现在获取数据都是全件获取,数据量非常大的时候,需要对数量进行限制。

  1. django_rest_framework_test/settings.py
  2. REST_FRAMEWORK = {
  3. 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
  4. 'PAGE_SIZE': 2
  5. }

设置需要全局设置。在配置文件里,定义REST_FRAMEWORK,设置DEFAULT_PAGINATION_CLASS和PAGE_SIZE。
这样API会出现offset(开始位置)和limit(限制件数,
default=PAGE_SIZE)等参数。
效果如下:
image.png

方法二:

当我们后端不管是sql还是nosql,数据量很大时,肯定不可能全部返回到一个页面,就需要做分页,把数据分页展示到多个页面上,相信你已经使用过django的pagination来分页,但是在drf中,使用分页很简单。先看看drf有哪些内置分页类能让我们继承。
image.png

1、定义分页类继承PageNumberPagination普通分页

  1. class MyPageNumberPagination(PageNumberPagination):
  2. """普通分页类"""
  3. # 每页展示多少条数据
  4. page_size = 1
  5. # 前端可以自己通过修改page=10,取哪一页的数据。
  6. page_query_param = 'page'
  7. # 前端可以?size=10000自己配置,每页想取多少条自己设置
  8. page_size_query_param = 'size'
  9. # 最大页码的查询参数名
  10. max_page_size = 1000
  11. 后面的查看下边

PageNumberPagination分页器使用_bubblelone的博客-CSDN博客


每页只显示1条数据
image.png

如果继承CursorPagination的话:

  1. class MyPageNumberPagination(CursorPagination):
  2. """加密分页,常见于大型网站"""
  3. cursor_query_param = 'page'
  4. page_size = 1
  5. ordering = 'id'
  6. # 我就直接弄得None,所以url设置每页显示多少条数据的参数没有
  7. page_size_query_param = None
  8. max_page_size = None

image.png