path('worklist/',views.WorkerView.as_view()),
2在视图里面继承ModelViewset
class WorkerView(APIView):
from rest_framework.views import APIView
from utils.api_Paginators import *
queryset = WorkOrder.objects.all()
serializer_class = WorkOrderSerializers
def get(self,request,objs):
self.queryset=self.queryset.all() #获取数据
ret=Paginators(self.queryset,request,self.serializer_class)
return Response(ret.data)
3在项目文件夹中找到utils 创建一个.py的文件(名字一定要见名知意)
# -*- coding: utf-8 -*-
from rest_framework.pagination import PageNumberPagination
from django.conf import settings
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
from rest_framework.views import Response
class PageNum(PageNumberPagination):
page_size_query_param = 'page_size'
def Paginators(objs,request,Serializer):
'''
objs :实体对象 ,queryset
request :请求对象
Serializer :对应实体对象的类
page_size :每页显示多少条数据
page : 显示第几页数据
total_count :总共有多少条数据
total :总页数
'''
try:
page_size=int(request.GET.get('page_size',settings.REST_FRAMEWORK['PAGE_SIZE']))
page=int(request.GET.get('page',1))
except (TypeError,ValueError):
return Response(status=400) #如果发生报错直接终止
paginator=Paginator(objs,page_size) #paginator对象
total_count=paginator.count
total=paginator.num_pages #总页数
try:
objs=paginator.page(page)
except PageNotAnInteger:
objs=paginator.page(1) #当前页
except EmptyPage:
objs=paginator.page(paginator.num_pages)
serializer=Serializer(objs,many=True) #序列化
return Response( #把data返回过去
data={
'results':serializer.data,
'page':page,
'page_size':page_size,
'total':total,
'count':total_count
}
)