前面的话:

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. 理解 OAuth2.0

    文章转载于阮一峰老师的博客:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 参考文章:https://learnku.com/article ...

  2. Docker跨主机网络联通之etcd实现

    搭建ETCD集群 查看NODE1机器IP,并启动ETCD ubuntu@docker-node1:~$ ifconfig eth0 eth0: flags=4163<UP,BROADCAST,R ...

  3. php安全开发(1)文件包含漏洞

    开发过程总结的漏洞: 一,,如何造成包含漏洞:在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶 ...

  4. Project Euler 66: Diophantine equation

    题目链接 思路: 连分数求佩尔方程最小特解 参考博客 模板: LL a[]; bool min_pell(LL d, LL &x, LL &y) { LL m = floor(sqrt ...

  5. 剑指offer-01

    好久没看java, 今天把 runoob 上的java基础简单过了一遍. 来吧,怎么整这个题目呢? 首先遇到的问题是java如何输入一个数组,而且这个数组并不知道长度是多少 用Scanner类 Sca ...

  6. 使用npm私有服务器保存公司内部强业务类型组件(二):vue-webpack框架

    一套基于vue webpack element-ui的npm私有服务器开发组件框架 下载 在配置的有两个地方需要注意: 1:配置library library选项: 如果设置此选项,会将bundle导 ...

  7. 论文笔记(Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration)

    这是CVPR 2019的一篇oral. 预备知识点:Geometric median 几何中位数 \begin{equation}\underset{y \in \mathbb{R}^{n}}{\ar ...

  8. Vue 组件异步加载(懒加载)

    一.vue的编译模式 (1)路由配置信息 //eg1: const MSite = resolve => require.ensure([], () =>resolve(require([ ...

  9. 【XAF问题】层层分级,如何让按钮显示指定的视图

    一.问题 1. 层层分级,如何让按钮显示指定的视图 二.解决方法 解决方法:因为它是层层级别的,不能显示出来指定的视图,需要添加ActionContainer,才可以显示出来

  10. 未在本地计算机上注册microsoft.ace.12.0的解决办法

    (1)去http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabase ...