hberp/hb_server/utils/pagination.py

26 lines
1.1 KiB
Python

from rest_framework.pagination import PageNumberPagination
from rest_framework.exceptions import ParseError
class MyPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
def paginate_queryset(self, queryset, request, view):
if request.query_params.get('pageoff', None) or request.query_params.get('page', None)=='0':
if queryset.count()<500:
return None
elif queryset.count()>=500:
raise ParseError('单次请求数据量大,请分页获取')
return super().paginate_queryset(queryset, request, view=view)
class PageOrNot:
def paginate_queryset(self, queryset):
if (self.paginator is None):
return None
elif self.request.query_params.get('pageoff', None) or self.request.query_params.get('page', None) == 0:
if queryset.count()<500:
return None
elif queryset.count()>=500:
raise ParseError('单次请求数据量大,请求中止')
return self.paginator.paginate_queryset(queryset, self.request, view=self)