zoukankan      html  css  js  c++  java
  • Django 分页

    Django分页的常用方法

    1. django 提供了一个Paginator的方法

      from django.core.paginator import Paginator
      
    2. 实例化对象

      paginator = Paginator(datalist,per_page)  # 里面传两个参数 数据和每页显示的记录数
      
    3. 获取数据的分页范围

      page_range = paginator.page_range  # 获取数据的分页范围 range(1,x) 从第一页到第x-1页
      
    4. 获取每页的数据

      page_list = paginator.page(num) # 传入页码 获取当前页的数据
      
    5. 获取总页数

      total_page = paginator.num_pages
      
    6. 指定显示的页数

      # 当前页码
      current_num = int(request.GET.get("page", 1))  
      #  显示方式
      # 一般网页展示11页,左5页,右5页,加上当前页,共11页
      # 11 就是可显示的页数 
      # 5 就是中位数 => 总页数//2
      if paginator.num_pages > 11:  
          if current_num - 5 < 1:  # 如果前5页小于1时
              pageRange = range(1, 11)  # 页码的列表:范围是初始状态
          elif current_num + 5 > paginator.num_pages:  # 如果后5页大于总页数时
              # 页码的列表:范围是(当前页-5,总页数+1)。因为range顾头不顾尾,需要加1
              pageRange = range(current_num - 5, paginator.num_pages + 1)
          else:
              # 页码的列表:后5页正常时,页码范围是(当前页-5,当前页+6)。注意不是+5,因为range顾头不顾尾!
              pageRange = range(current_num - 5, current_num + 6)
      else:
          pageRange = paginator.page_range  # 页码的列表
      
      
    7. 封装方法

       def get_page(self,pageobj,p,showPage=11):
           # 1.获取总页数
           totalPage = pageobj.num_pages
           # 2.获取中位数
           midPage = int(showPage/2)
           # 3.如果总页数大于可显示的页数
           if totalPage > showPage:
               # 5. 判断当前页如果小于中位数
               if p - midPage < 1:
                   page = [i for i in range(1,showPage+1)]
               elif p + midPage > totalPage:
                   # 6. 如果当前页+中位数大于总页数的话,那么只能是总页数-(中位数-1)到总页数+1
                   page = [i for i in range(totalPage-(showPage-1),totalPage+1)]
               else:
                   # 7. 如果在区间的话,应该是当前页-中位数到当前页+(中位数+1)
                   page = [i for i in range(p-midPage,p+midPage+1)]
           else:
               # 4. 当总页数小于可显示的页数的时候,全部显示
               page = [i for i in pageobj.page_range]
           return page
      
  • 相关阅读:
    mac配置ls命令显示不同文件不同颜色
    nginx安装
    PostgreSQL的架构
    /etc/sysctl.conf配置文件
    pg_hba.conf配置文件
    gitlab不支持mysql,这就是我学习PostgreSQL的原因
    postgresql安装
    git的三个区域比较
    mysql备份时的快照原理
    mysql密码管理
  • 原文地址:https://www.cnblogs.com/wuxiaoshi/p/11762749.html
Copyright © 2011-2022 走看看