django rest framework 实现分页功能

一.在serializers.py中创建序列化对象类 

from rest_framework import serializers
from .models import Role


class PagerSerialiser(serializers.ModelSerializer):
    class Meta:
# 绑定模型 model
= Role
     # 处理所有字段 fields
= "__all__"

二.视图views.py中

from .serializsers import PagerSerialiser
from rest_framework.response import Response
from rest_framework.pagination import PageNumberPagination
from rest_framework.views import APIView
#自定义分页类
class MyPageNumberPagination(PageNumberPagination):
    #每页显示多少个
    page_size = 3
    #默认每页显示3个,可以通过传入pager1/?page=2&size=4,改变默认每页显示的个数
    page_size_query_param = "size"
    #最大页数不超过10
    max_page_size = 10
    #获取页码数的, 可以传入 page 参数进行获取不同的页码数的数据
    page_query_param = "page"


class Pager1View(APIView):
    def get(self,request,*args,**kwargs):
        #获取所有数据
        roles = models.Role.objects.all()
        #创建分页对象,这里是自定义的MyPageNumberPagination
        pg = MyPageNumberPagination()
        #获取分页的数据
        page_roles = pg.paginate_queryset(queryset=roles,request=request,view=self)
        #对数据进行序列化
        ser = PagerSerialiser(instance=page_roles,many=True)
        return Response(ser.data)

猜你喜欢

转载自www.cnblogs.com/lowmanisbusy/p/9119450.html