• 分页封装


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

    # -*- 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
  • 相关阅读:
    密码保护
    实现搜索功能
    完成个人中心—导航标签
    个人中心标签页导航
    评论列表显示及排序,个人中心显示
    完成评论功能
    从首页问答标题到问答详情页
    首页列表显示全部问答,完成问答详情页布局
    Android基础学习:Android环境搭建
    liunx 硬盘分区
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14078780.html
Copyright © 2020-2023  润新知