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 相关文章推荐
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
Python列表元素常见操作简单示例
Oct 25 Python
pygame实现成语填空游戏
Oct 29 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
Python-openCV开运算实例
Jul 05 Python
Python定义一个Actor任务
Jul 29 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
pytorch 一行代码查看网络参数总量的实现
May 12 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
详解react-redux插件入门
2018/04/19 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现爬虫下载美女图片
2015/07/14 Python
python之super的使用小结
2018/08/13 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
高中生自我评语大全
2014/01/19 职场文书
讲解员培训方案
2014/05/04 职场文书
关于爱国的标语
2014/06/24 职场文书
党员志愿者活动总结
2014/06/26 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
SQLServer之常用函数总结详解
2021/08/30 SQL Server