前面的话:

1. 网页引用的bootstrap 中的表格,所以需要引入样式类

2. 第一次写文章,不喜勿喷。有不足的地方,可留言我改正,在此先谢过。

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>分页</title>
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
</head>
<body> <div class="container">
<table class="table table-bordered">
<thead>
<tr>
<th>序号</th>
<th>编号</th>
<th>名字</th>
</tr>
</thead>
{% for user in user_list %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ user.id }}</td>
<td>{{ user.name }}</td>
</tr>
{% endfor %}
</table>
<nav aria-label="Page navigation">
<ul class="pagination"> {{ page_html|safe }} <!--传值--!> </ul>
</nav>
</div> </body>
</html>

views代码:

from django.shortcuts import render, redirect, HttpResponse
from app01 import models
# Create your views here. def page(request):
# 从url取参数
page_num = request.GET.get("p")
# 求总页数,每页显示10条数据
total_data = models.Books.objects.all().count()
total_page, i = divmod(total_data, 10) # divmod运算可取到整数和余数分别保存在total_page,i 中
try:
page_num = int(page_num)
if page_num > total_page:
page_num = total_page
except Exception as e:
page_num = 1
# 定义两个变量保存起始数据
print(page_num)
data_start = (page_num-1)*10 + 1
data_end = page_num*10 if i:
total_page = total_page + 1 # 判断如有余数,加1页 # 页面上总共展示多少页面
max_page = 7
if total_page <= max_page:
max_page = total_page
half_max_page = max_page // 2
# 页面上展示的页码从哪儿开始
page_start = page_num - half_max_page # 页面上展示的页码到哪儿结束
page_end = page_num + half_max_page
# 前部分
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
# 自己拼接分页的HTTML代码
html_str_list = []
# 加上首页
html_str_list.append('<li><a href="/page/?p=1">首页</a></li>')
# 加上上一页
if page_num <= 1:
html_str_list.append(
'<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>')
else:
html_str_list.append(
'<li><a href="/page/?p={0}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>'.format(
page_num - 1)) for i in range(page_start, page_end+1):
# 如果是当前页就加一个active样式类
if i == page_num:
tem = '<li class="active"><a href="/page/?p={0}">{0}</a></li>'.format(i)
else:
tem = '<li><a href="/page/?p={0}">{0}</a></li>'.format(i) #括号里要写0
html_str_list.append(tem)
# 加上下一页
if page_num >= total_page:
html_str_list.append(
'<li class="disabled"><a href="#" aria-label="Next">''<span aria-hidden="true">&raquo;</span></a></li>')
else:
html_str_list.append(
'<li><a href="/page/?p={0}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>'.format(
page_num + 1))
# 加最后一页
html_str_list.append('<li><a href="/page/?p={0}">尾页</a></li>'.format(total_page))
page_html = "".join(html_str_list) # all_user = models.UserInfo.objects.all()[10: 20]
all_user = models.Books.objects.filter(id__gte=data_start, id__lte=data_end)
print(all_user)
return render(request, "page.html", {"user_list": all_user, "page_html": page_html})

HTML 基于 Python 实现分页功能的更多相关文章

  1. python通用分页功能

    实现: class Page: def __init__(self,current_page,data_count,per_page_count=10,pager_num=10): self.curr ...

  2. 基于 Python 的自定义分页组件

    基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...

  3. poscms基于list标签实现的查询分页功能

    poscms系统本身有一个在查询页(search页面)实现的查询分页功能,基于系统封装的php函数dr_search_url() 但是今天的需求除了导航栏.列表页.详情页都实现查询功能外,关键是有两个 ...

  4. php基于SQLite实现的分页功能示例

    php基于SQLite实现的分页功能. 这里操作数据库文件使用的是前面文章<PHP基于PDO实现的SQLite操作类>中的SQLite数据库操作类. 代码: <?php class ...

  5. Django 实现分页功能(django 2.2.7 python 3.7.5 )

    Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...

  6. 基于SSM框架的简易的分页功能——包含maven项目的搭建

    新人第一次发帖,有什么不对的地方请多多指教~~ 分页这个功能经常会被使用到,我之前学习的时候找了很多资源,可都看不懂(笨死算了),最后还是在朋友帮助下做出了这个分页.我现在把我所能想到的知识 做了一个 ...

  7. .NET基于分页控件实现真分页功能

    下面利用分页控件实现分页功能.分页控件下载网址:http://www.webdiyer.com/ 从该网址下载AspNetPager.dll后,在VS2008中在工具箱中,右键 —> 选择项 — ...

  8. Python odoo中嵌入html简单的分页功能

    在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 <!-- 分页 -->< ...

  9. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...

随机推荐

  1. Go 嵌入类型

    文章转载地址:https://www.flysnow.org/2017/04/06/go-in-action-go-embedded-type.html 嵌入类型或嵌套类型,这是一种可以把已有类型的声 ...

  2. tomcat中显示本地图片①(未解决)

    <本模块文仅作为学习过程中的自我总结,有需要可参看,欢迎指导与提出建议,很多地方可能断章取义,理解不到位,虚心求学.谢谢!> 资料查阅原因:2018/7/10(做项目中显示详情页面,从数据 ...

  3. 20175317 MyCP(课下作业,必做)

    一.题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内 ...

  4. 《javascript经典入门》-day01

    <javascript经典入门>-day01 1.了解JavaScript 01.浏览器每次加载和显示页面时,都在内存里创建页面及其全部元素的一个内部表示体系,,也就是DOM.在DOM里, ...

  5. mongo学习笔记2--索引及表设计

    -背景: 鉴于我们使用mongo作为数据库,期间少不了需要添加索引和对业务表进行设计.因此以下我对mongo索引及表设计原则做了一些分享.希望对大家有用,如有错误还望指正~ MongDB的索引类型简介 ...

  6. Java程序设计的第二次作业

    本次作业包含两个部分:一是以下4个题目的程序源码和运行结果截图:二是本次作业的小结(谈谈你在做作业的过程中遇到了哪些问题,如何解决,有哪些收获). 1.编写“人”类及其测试类.1.1 “人”类: 类 ...

  7. Linux 细节(杂)

    1.所有上传至linux服务器的文件都是英文,避免中文出现乱码导致一些非预期错误,难以查找. 2.删除较危险,linux没有回收站,慎用 rm -rf 3.vi/vim学习地址:http://www. ...

  8. 2019南昌网络赛G. tsy's number

    题意:\(\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\frac{\phi(i)*\phi(j^2)*\phi(k^3)}{\phi(i)*\phi(j)*\phi(k)} ...

  9. h5页面避免两个页面反复跳转死循环

    项目中经常会碰到在一个页面加判断之后跳转另一个页面,并且无法返回,来回跳转,死循环,遇到这种情况可以在跳转时使用location,replace,关闭之前页面,与location.href 两者的不同 ...

  10. c++中各类型数据所占字节数(二)

    转自:https://blog.csdn.net/allen_tony/article/details/76973906 https://blog.csdn.net/zzwdkxx/article/d ...