今天刚写了一个,看下继承的基类的逻辑即可完成,我也是找了一圈没找到,就自己看了下写了个,也算是给同样搜索的有个留存
```
class PageAndSizePagination(PageNumberPagination):
"""
基于 page 和每页 size 进行简单的分页. For example:
http://api.example.org/accounts/?page=4 http://api.example.org/accounts/?page=4&size=100 """
page_size_query_param = 'size'
def get_page_size(self, request):
"""
重写 get_page_size 方法以支持全部更多模式下的分页. For Example:
返回全部
http://api.example.org/accounts/ http://api.example.org/accounts/?page=x http://api.example.org/accounts/?page=x&size=-1 (size 为负数)
其他的与普通的一样
"""
if self.page_size_query_param:
try:
page_size_query_param = request.query_params[self.page_size_query_param]
if int(page_size_query_param) < 0:
return None
except (KeyError, ):
return None
return self.page_size
```