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模拟Django框架实例
May 17 Python
Python字符串格式化的方法(两种)
Sep 19 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
python实现猜数字游戏
Mar 25 Python
在django中使用apscheduler 执行计划任务的实现方法
Feb 11 Python
python查看矩阵的行列号以及维数方式
May 22 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 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 feof用来识别文件末尾字符的方法
2010/08/01 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
Python入门篇之对象类型
2014/10/17 Python
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
python链接Oracle数据库的方法
2015/06/28 Python
玩转python爬虫之正则表达式
2016/02/17 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
python输出数学符号实例
2020/05/11 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
爱普生美国官网:Epson美国
2018/11/05 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
大学生护理专业自荐信
2013/10/03 职场文书
激励口号大全
2014/06/17 职场文书
合作意向书
2014/07/30 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
小学生交通安全寄语
2015/02/27 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL