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模块restful使用方法实例
Dec 10 Python
Python函数式编程指南(一):函数式编程概述
Jun 24 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
python安装本地whl的实例步骤
Oct 12 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
python如何实现单链表的反转
Feb 10 Python
Django重设Admin密码过程解析
Feb 10 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
教你怎么用python实现字符串转日期
May 24 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
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
浅谈python字符串方法的简单使用
2016/07/18 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
Django数据库操作之save与update的使用
2020/04/01 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
公共艺术专业自荐信
2014/09/01 职场文书
会议主持词结束语
2015/07/03 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Moment的feature导致线上bug解决分析
2022/09/23 Javascript