实际开发过程中,如果后台数据量较多时,一次性返回给前端肯定不现实,所以DRF也自带分页的功能,实现的方式有很多种,小编就学习过程中使用过的两种方法来说明一下。都是基于 PageNumberPagination 类使用和自定义重写分页功能。操作步骤如下:
1. 首先在 setting.py 中,定义全局默认的分页。
![](https://img.haomeiwen.com/i19160182/678ea6b111add28d.png)
下面红色标出来的就是使用 PageNumberPagination 类,把查询出来的进行分页。
![](https://img.haomeiwen.com/i19160182/e86d010db74caad0.png)
下面看下源码的几个主要参数如下:page_size、page_query_param、page_size_query_param、max_page_size. 后面的自定义其实也是设置这几个参数。
![](https://img.haomeiwen.com/i19160182/b2ebfa088199e316.png)
所以知道这几个参数的用途之后,就可以自由的设置分页的查询参数以及最大页数,这样设置的好处还有就是,一般都是前端传页数过来查询,而不是后端默认设置写死。这样的话就灵活一点。
![](https://img.haomeiwen.com/i19160182/2c715c7a6cebfa00.png)
2. 第二种的话也类似,就是在APP下面新增一个 page.py 文件,重写 MyPageNumberPagination 类继承 PageNumberPagination 类。
![](https://img.haomeiwen.com/i19160182/d912ada55f6d6df1.png)
然后在 views.py 导入,实例化即可,用法差不多。
![](https://img.haomeiwen.com/i19160182/966a52be451a4eee.png)
当然除了这两种方法,还有其他的几种方法:LimitOffsetPagination、CursorPagination,感兴趣的小伙伴可以自行去了解。
网友评论