Python Django 页面上展示固定的页码数实现代码


Posted in Python onAugust 21, 2019

如果页数太多的话,全部显示在页面上就会显得很冗杂

Python Django 页面上展示固定的页码数实现代码

可以在页面中显示规定的页码数

例如:

Python Django 页面上展示固定的页码数实现代码

book_list.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>书籍列表</title>
  <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css" rel="external nofollow" >
</head>
<body>
 
<div class="container">
 
  <table class="table table-bordered">
    <thead>
    <tr>
      <th>序号</th>
      <th>id</th>
      <th>书名</th>
    </tr>
    </thead>
    <tbody>
    {% for book in books %}
      <tr>
        <td>{{ forloop.counter }}</td>
        <td>{{ book.id }}</td>
        <td>{{ book.title }}</td>
      </tr>
    {% endfor %}
 
    </tbody>
  </table> 
  <nav aria-label="Page navigation">
    <ul class="pagination">
      <li>
        <a href="#" rel="external nofollow" rel="external nofollow" aria-label="Previous">
          <span aria-hidden="true">«</span>
        </a>
      </li>
      <li>
        {{ page_html|safe }}
      </li>
      <li>
        <a href="#" rel="external nofollow" rel="external nofollow" aria-label="Next">
          <span aria-hidden="true">»</span>
        </a>
      </li>
    </ul>
  </nav> 
</div> 
</body>
</html>

views.py:

from django.shortcuts import render
from app01 import models 
def book_list(request):
  # 从 URL 中取参数
  page_num = request.GET.get("page")
  print(page_num, type(page_num))
  page_num = int(page_num)
 
  # 定义两个变量保存数据从哪儿取到哪儿
  data_start = (page_num-1)*10
  data_end = page_num*10
 
  # 书籍总数
  total_count = models.Book.objects.all().count()
 
  # 每一页显示多少条数据
  per_page = 10
 
  # 总共需要多少页码来显示
  total_page, m = divmod(total_count, per_page)
 
  # 页面上最多展示的页码
  max_page = 11
  half_max_page = max_page // 2
 
  # 页面上展示的页码的开始页
  page_start = page_num - half_max_page
  # 页面上展示的页码的结束页
  page_end = page_num + half_max_page
 
  # 如果当前页减一半比 1 小
  if page_start <= 1:
    page_start = 1
    page_end = max_page
  # 如果当前页加一半比总页码还大
  if page_end > total_page:
    page_end = total_page
    page_start = total_page - max_page + 1
 
  # 如果还有数据
  if m:
    total_page += 1
 
  all_book = models.Book.objects.all()[data_start:data_end]
 
  # 拼接 html 的分页代码
  html_list = []
  for i in range(page_start, page_end+1):
    tmp = '<li><a href="/book_list/?page={0}" rel="external nofollow" >{0}</a></li>'.format(i)
    html_list.append(tmp)
 
  page_html = "".join(html_list)
 
  return render(request, "book_list.html", {"books": all_book, "page_html": page_html})

运行结果:

Python Django 页面上展示固定的页码数实现代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之玩转字符串(2)
Sep 14 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
使用Python生成XML的方法实例
Mar 21 Python
Python中使用支持向量机SVM实践
Dec 27 Python
Python zip()函数用法实例分析
Mar 17 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
PageFactory设计模式基于python实现
Apr 14 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
解决python运行效率不高的问题
Jul 20 Python
python保存图片的四个常用方法
Feb 28 Python
详解Python利用random生成一个列表内的随机数
Aug 21 #Python
Python Django 封装分页成通用的模块详解
Aug 21 #Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 #Python
python numpy 常用随机数的产生方法的实现
Aug 21 #Python
在django模板中实现超链接配置
Aug 21 #Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 #Python
Django 在iframe里跳转顶层url的例子
Aug 21 #Python
You might like
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
PHP 上传文件的方法(类)
2009/07/30 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
客户端静态页面玩分页
2006/06/26 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
python按照多个条件排序的方法
2019/02/08 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
python Matplotlib模块的使用
2020/09/16 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
介绍一下linux的文件系统
2015/10/06 面试题
视光学毕业生自荐书范文
2014/02/13 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
导游词之太湖
2019/10/08 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
vue实力踩坑之push当前页无效
2022/04/10 Vue.js