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运算π的值深入Python中科学计算的实现
Apr 17 Python
python类和函数中使用静态变量的方法
May 09 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
python Flask实现restful api service
Dec 04 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
用于业余项目的8个优秀Python库
Sep 21 Python
对python生成业务报表的实例详解
Feb 03 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
python 实现多线程下载视频的代码
Nov 15 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
Pytorch 之修改Tensor部分值方式
Dec 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 $_FILES函数详解
2011/03/09 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
js中小数转换整数的方法
2014/01/26 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
Python运算符重载用法实例
2015/05/28 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
python如何将多个PDF进行合并
2019/08/13 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python绘制高斯曲线
2021/02/19 Python
Python读写Excel表格的方法
2021/03/02 Python
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
建筑工程技术应届生自荐信
2013/09/27 职场文书
新闻专业个人求职信
2013/12/19 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
利用python做数据拟合详情
2021/11/17 Python
Python循环之while无限迭代
2022/04/30 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL