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 continue语句用法实例
Mar 11 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
May 22 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
3个用于数据科学的顶级Python库
Sep 29 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
python实现复制大量文件功能
Aug 31 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Jupyter notebook如何修改平台字体
May 13 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
pandas 实现将NaN转换为None
May 14 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
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
php检测url是否存在的方法
2015/04/14 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
用原生js做单页应用
2017/01/17 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
ES6中let 和 const 的新特性
2018/09/03 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
python基础教程之元组操作使用详解
2014/03/25 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python的re正则表达式实例代码
2018/01/24 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
中软国际Java程序员机试题
2012/08/19 面试题
医学护理系毕业生求职信
2013/10/01 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
个人自我鉴定总结
2014/03/25 职场文书
天网工程实施方案
2014/03/26 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
毕业生求职信
2014/06/10 职场文书
中国梦读书活动总结
2014/07/10 职场文书
个人授权委托书范本
2014/09/14 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
投诉信回复范文
2015/07/03 职场文书
安全主题班会教案
2015/08/12 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
springcloud整合seata
2022/05/20 Java/Android