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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
python求crc32值的方法
Oct 05 Python
用Python进行基础的函数式编程的教程
Mar 31 Python
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
python-opencv颜色提取分割方法
Dec 08 Python
使用python绘制二元函数图像的实例
Feb 12 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
Python循环中else,break和continue的用法实例详解
Jul 11 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
Python实现自动整理文件的脚本
Dec 17 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图像处理类库及演示分享
2015/05/17 PHP
php显示时间常用方法小结
2015/06/05 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
JS 统计时间
2021/03/09 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python自动登录QQ的实现示例
2020/08/28 Python
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
介绍一下linux的文件权限
2014/07/20 面试题
车间班组长岗位职责
2013/11/13 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
课题研究阶段性总结
2015/08/13 职场文书
进行数据处理的6个 Python 代码块分享
2022/04/06 Python