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

     封装分页方法  直接调用函数可使用

    # -*- coding: utf-8 -*-
    from rest_framework.pagination import PageNumberPagination
    from django.conf import settings
    from django.core.paginator import EmptyPage,Paginator,PageNotAnInteger
    from rest_framework.views import Response
    
    
    #分页(局部) :自定义分页器 局部
    class PageNum(PageNotAnInteger):
        #查询字符串代表每页返回数据数量的参数名,默认值:None
        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={
                'results':serializer.data,
                'page':page,
                'page_size':page_size,
                'total':total,
                'count':total_count
            }
        )
        
    page
    from rest_framework.views import APIView
    from rest_framework.response import Response
    from utils.api_paginator import Paginators
    #实例化工单
    class WorkOrderView111(APIView):
        queryset=WorkOrder.objects.all()
        serializer_class=WorkOrderSerizlizers
        pagination_class = PageNum
        def get(self,request):
            self.queryset=self.queryset.all()
            ret=Paginators(self.queryset,request,self.serializer_class)
            return Response(ret.data)
    Views.py
  • 相关阅读:
    做好最后的1%
    南海城市大脑二期测试的思考
    职场动物进化手册
    搜索框测试用例
    三月版三一金票需求测试总结
    “魔鬼”隐藏在细节中
    java----jdbcTemplate
    内网隧道与SOCKS代理思路总结
    一些免杀方法测试
    JavaScript 关于闭包、同步、异步问题
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14078780.html
Copyright © 2011-2022 走看看