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+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Python实现的读写json文件功能示例
Jun 05 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
如何使用python实现模拟鼠标点击
Jan 06 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
浅谈python锁与死锁问题
Aug 14 Python
利用Python函数实现一个万历表完整示例
Jan 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
php5新改动之短标记启用方法
2008/09/11 PHP
使用php清除bom示例
2014/03/03 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
python django集成cas验证系统
2014/07/14 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
如何获取Python简单for循环索引
2019/11/21 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
表彰先进的通报
2014/01/31 职场文书
《雨点》教学反思
2014/02/12 职场文书
领导调研接待方案
2014/02/27 职场文书
公司承诺书格式
2014/05/21 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
化验室岗位职责
2015/02/14 职场文书