HTML 基于 Python 实现分页功能
前面的话:
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">«</span></a></li>')
else:
html_str_list.append(
'<li><a href="/page/?p={0}" aria-label="Previous"><span aria-hidden="true">«</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">»</span></a></li>')
else:
html_str_list.append(
'<li><a href="/page/?p={0}" aria-label="Next"><span aria-hidden="true">»</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 实现分页功能的更多相关文章
- python通用分页功能
实现: class Page: def __init__(self,current_page,data_count,per_page_count=10,pager_num=10): self.curr ...
- 基于 Python 的自定义分页组件
基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...
- poscms基于list标签实现的查询分页功能
poscms系统本身有一个在查询页(search页面)实现的查询分页功能,基于系统封装的php函数dr_search_url() 但是今天的需求除了导航栏.列表页.详情页都实现查询功能外,关键是有两个 ...
- php基于SQLite实现的分页功能示例
php基于SQLite实现的分页功能. 这里操作数据库文件使用的是前面文章<PHP基于PDO实现的SQLite操作类>中的SQLite数据库操作类. 代码: <?php class ...
- Django 实现分页功能(django 2.2.7 python 3.7.5 )
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...
- 基于SSM框架的简易的分页功能——包含maven项目的搭建
新人第一次发帖,有什么不对的地方请多多指教~~ 分页这个功能经常会被使用到,我之前学习的时候找了很多资源,可都看不懂(笨死算了),最后还是在朋友帮助下做出了这个分页.我现在把我所能想到的知识 做了一个 ...
- .NET基于分页控件实现真分页功能
下面利用分页控件实现分页功能.分页控件下载网址:http://www.webdiyer.com/ 从该网址下载AspNetPager.dll后,在VS2008中在工具箱中,右键 —> 选择项 — ...
- Python odoo中嵌入html简单的分页功能
在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 <!-- 分页 -->< ...
- 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据
基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据 by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...
随机推荐
- 拿取页面值 跟拿取value里面的值
拿取页面输入框的数值 使用 val() val()设置或返回表单字段的值 拿取value里面的数值 value(); attr() 获取属性值
- y
switch(update_state) { : switch(num){ : window.progressn=num $('#h_progress_bar .ui-progress').anima ...
- Pandas-数据的合并与拼接
Pandas包的merge.join.concat方法可以完成数据的合并和拼接,merge方法主要基于两个dataframe的共同列进行合并,join方法主要基于两个dataframe的索引进行合并, ...
- UI组件--element-ui合计行在横向滚动条下面的解决方法
使用element-ui合计功能, 因列数较多, 产生横向滚动条: 但是合计行却在滚动条下面, 拖动滚动条合计行不会跟着横向滚动. 在当前页面添加以下样式: <style lang='less' ...
- Lyrics来源
Lyre 里拉琴,古希腊语,在北欧流行至中世纪. Lyrics in sheet music. This is a homorhythmic (i.e., hymn-style) arrangem ...
- 如何利用redis来进行分布式集群系统的限流设计
在很多高并发请求的情况下,我们经常需要对系统进行限流,而且需要对应用集群进行全局的限流,那么我们如何类实现呢. 我们可以利用redis的缓存来进行实现,并且结合mysql数据库一起,先来看一个流程图. ...
- 最新亚马逊 Coupons 功能设置教程完整攻略!
最新亚马逊 Coupons 功能设置教程完整攻略! http://m.cifnews.com/app/postsinfo/18479 亚马逊总是有新的创意,新的功能.最近讨论很火的,就是这个 Coup ...
- Lab 11-1
Analyze the malware found in Lab11-01.exe. Questions and Short Answers What does the malware drop to ...
- OO面向对象第一单元总结
OO面向对象第一单元总结(表达式求导) 写在前面: 魔鬼课程oo第一单元终于结束,当终究要落笔总结,竟不知从何写起…… 回首再去看第一次的作业,你会满足于那时的幸福,或许,这就是成长吧! 千言万语,一 ...
- what is API
JavaScript — A high-level scripting language built into browsers that allows you to implement functi ...