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的装饰器的运用
May 05 Python
Python文件读写常见用法总结
Feb 22 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
Flask之pipenv虚拟环境的实现
Nov 26 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
Eclipse配置python默认头过程图解
Apr 26 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python复合条件下的字典排序
Dec 18 Python
python 如何读、写、解析CSV文件
Mar 03 Python
提取视频中的音频 Python只需要三行代码!
May 10 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和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
再论Javascript的类继承
2011/03/05 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
python学习数据结构实例代码
2015/05/11 Python
python九九乘法表的实例
2017/09/26 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
华为慧通笔试题
2016/04/22 面试题
房地产员工找工作的自我评价
2013/11/15 职场文书
主题实践活动总结
2014/05/08 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
公司租房协议书
2014/10/14 职场文书
办公室规章制度范本
2015/08/04 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
python入门之算法学习
2021/04/22 Python