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中的变量和赋值运算符
Oct 12 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Python常见工厂函数用法示例
Mar 21 Python
python 获取当天每个准点时间戳的实例
May 22 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
Oct 11 Python
Python并行分布式框架Celery详解
Oct 15 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
一文了解Python并发编程的工程实现方法
May 31 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
PHP会话处理的10个函数
2015/08/11 PHP
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
Javascript函数的参数
2015/07/16 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
js实现内置计时器
2019/12/16 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
JS实现多选框的操作
2020/06/24 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中的pass语句使用方法讲解
2015/05/14 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
酒吧员工的岗位职责
2013/11/26 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
Python利用zhdate模块实现农历日期处理
2022/03/31 Python