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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
python共享引用(多个变量引用)示例代码
Dec 04 Python
Python写的Socks5协议代理服务器
Aug 06 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
python多维数组切片方法
Apr 13 Python
python使用Flask操作mysql实现登录功能
May 14 Python
Python装饰器语法糖
Jan 02 Python
Django如何实现上传图片功能
Aug 16 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Python对excel的基本操作方法
Feb 18 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目录导航文件代码
2006/10/09 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
javascript读写json示例
2014/04/11 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
原生js获取left值和top值的三种方法
2017/08/02 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
js抽奖转盘实现方法分析
2020/05/16 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
彻底搞懂Python字符编码
2018/01/23 Python
Python编程argparse入门浅析
2018/02/07 Python
python批量解压zip文件的方法
2019/08/20 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
便利店的创业计划书
2014/01/15 职场文书
股权投资意向书
2014/04/01 职场文书
住宅使用说明书
2014/05/09 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
离职感谢信
2015/01/21 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技