- 看第N页,每页显示N条数据
from rest_framework.response import Response
from rest_framework.pagination import PageNumberPagination
class MyPageNumberPagination(PageNumberPagination):
page_size = 2
page_size_query_param = 'size'
max_page_size = 3
page_query_param = 'pager'
class Pager1View(APIView):
def get(self, request, *args, **kwargs):
# 获取所有数据
roles = models.Role.objects.all()
# 创建分页对象
# pg = MyPageNumberPagination() #自定义分页
pa = PagerSerializers()
# 在数据库中获取分页的数据
pager_roles = pg.paginate_queryset(queryset=roles, request=request, view=self)
# 对数据进行序列化
ser = PagerSerializers(instance=pager_roles, many=True)
return Response(ser.data)
- 从第N条索引开始显示,显示N条
from rest_framework.response import Response
from rest_framework.pagination import LimitOffsetPagination
class MyLimitOffsetPagination(LimitOffsetPagination):
default_limit = 2
limit_query_param = 'limit' # 向后取多少条
offset_query_param = 'offset' # 从n(offset=n )索引开始取
max_limit = 6
class Pager1View(APIView):
def get(self, request, *args, **kwargs):
# 获取所有数据
roles = models.Role.objects.all()
# 创建分页对象
# pg = MyPageNumberPagination() #自定义分页
pg = MyLimitOffsetPagination()
# 在数据库中获取分页的数据
pager_roles = pg.paginate_queryset(queryset=roles, request=request, view=self)
# 对数据进行序列化
ser = PagerSerializers(instance=pager_roles, many=True)
return Response(ser.data)
- 加密分页,获取上一页和下一页
from api.utils.serializers.pager import PagerSerializers
from rest_framework.response import Response
from rest_framework.pagination import CursorPagination
class MyCursorPagination(CursorPagination):
cursor_query_param = 'cursor'
page_size = 2
ordering = 'id'
class Pager1View(APIView):
def get(self, request, *args, **kwargs):
# 获取所有数据
roles = models.Role.objects.all()
# 创建分页对象
# pg = MyPageNumberPagination() #自定义分页
pg = MyCursorPagination()
# 在数据库中获取分页的数据
pager_roles = pg.paginate_queryset(queryset=roles, request=request, view=self)
# 对数据进行序列化
ser = PagerSerializers(instance=pager_roles, many=True)
# return Response(ser.data)
return pg.get_paginated_response(ser.data) # 显示上一页和下一页链接