my-django/utils/paginator.py
Kai 5d9073c19c
Some checks failed
test / build (push) Has been cancelled
test / deploy (push) Has been cancelled
test / release (push) Has been cancelled
first commit
2025-03-21 17:45:04 +08:00

40 lines
1.2 KiB
Python

"""
基本的分页器
"""
from rest_framework.exceptions import NotFound
from rest_framework.pagination import PageNumberPagination
class BasicSetPagination(PageNumberPagination):
# 默认每页显示的数据条数
page_size = 10
# 获取URL参数中设置的每页显示数据条数
page_size_query_param = "page_size"
# 获取URL参数中传入的页码key
page_query_param = "page_num"
# 最大支持的每页显示的数据条数
max_page_size = 100
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["total"] = self.page.paginator.count
return res
except NotFound as e:
return {}