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 相关文章推荐
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
python的turtle库使用详解
May 10 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
pandas分组聚合详解
Apr 10 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
python 命令行传参方法总结
May 25 Python
python游戏开发Pygame框架
Apr 22 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连接数据库代码应用分析
2011/05/29 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
非常实用的php验证码类
2016/05/15 PHP
PHP反射API示例分享
2016/10/08 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
javascript demo 基本技巧
2009/12/18 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
Javascript继承机制详解
2017/05/30 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
python内存管理分析
2015/04/08 Python
python简单读取大文件的方法
2016/07/01 Python
python删除过期log文件操作实例解析
2018/01/31 Python
python放大图片和画方格实现算法
2018/03/30 Python
Django中的ajax请求
2018/10/19 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
专业求职信撰写要诀
2014/02/18 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
工作散漫检讨书
2014/09/16 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
特种设备安全管理制度
2015/08/06 职场文书
校园音乐节目广播稿
2015/08/19 职场文书