zoukankan      html  css  js  c++  java
  • 封装分页

    1在路由改变modelviewset

    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
            }
        )
    
  • 相关阅读:
    任意用户密码重置的10种姿势
    提取header头进行模块化处理
    web安全测试--XSS(跨站脚本)与CSRF
    web测试--登录界面怎么测?
    Burp Suite抓https数据包
    CTFHub_技能树_远程代码执行
    CTFHub_技能树_SQL注入Ⅱ
    XSS 跨站脚本
    C语言中的内存对齐问题
    CTFHub_技能树_SQL注入Ⅰ
  • 原文地址:https://www.cnblogs.com/wangxiaosai/p/14082060.html
Copyright © 2011-2022 走看看