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实现哈希表
Feb 07 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
使用openCV去除文字中乱入的线条实例
Jun 02 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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
SONY SRF-M100的电路分析
2021/03/02 无线电
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php引用传值实例详解学习
2013/11/06 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
基于postman获取动态数据过程详解
2020/09/08 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
Python Web框架Tornado运行和部署
2020/10/19 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
详解python中的index函数用法
2019/08/06 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
使用python远程操作linux过程解析
2019/12/04 Python
python3实现绘制二维点图
2019/12/04 Python
linux 下selenium chrome使用详解
2020/04/02 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
C有"按引用传递"吗
2016/09/06 面试题
国际经济贸易专业自荐信
2014/06/13 职场文书
小学感恩节活动总结
2015/03/24 职场文书
亮剑观后感500字
2015/06/05 职场文书
《猴王出世》教学反思
2016/02/23 职场文书