43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
@Author :mengying
|
||
@Date :2024/6/13 14:27
|
||
@Email : 652044581@qq.com
|
||
@Desc : 分页器
|
||
"""
|
||
from rest_framework.exceptions import NotFound
|
||
from rest_framework.pagination import PageNumberPagination
|
||
|
||
|
||
class StandardResultsSetPagination(PageNumberPagination):
|
||
# 默认每页显示的数据条数
|
||
page_size = 10
|
||
|
||
# 获取URL参数中设置的每页显示数据条数
|
||
page_size_query_param = 'pageSize'
|
||
|
||
# 获取URL参数中传入的页码key
|
||
page_query_param = 'pageNum'
|
||
|
||
# 最大支持的每页显示的数据条数
|
||
max_page_size = 50
|
||
|
||
def paginate_queryset_data(self, queryset, request, view=None, serializer=None):
|
||
try:
|
||
queryset = super().paginate_queryset(queryset, request=request, view=view)
|
||
ser = serializer(queryset, many=True)
|
||
return ser.data
|
||
except NotFound as e:
|
||
return []
|
||
|
||
def paginate_queryset_count(self, queryset, request, view=None, serializer=None):
|
||
try:
|
||
res = {}
|
||
queryset = super().paginate_queryset(queryset, request=request, view=view)
|
||
ser = serializer(queryset, many=True)
|
||
res["data"] = ser.data
|
||
res["count"] = self.page.paginator.count
|
||
return res
|
||
except NotFound as e:
|
||
return {}
|