前面的话:

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/05/16/go-in-action-go-unit-test.html 什么是单元测试?      单元测试一般用来测 ...

  2. 使用 Chrome DevTools 调试 JavaScript

    参考网址如下: http://www.css88.com/archives/8175 https://jingyan.baidu.com/article/67508eb423d2929ccb1ce45 ...

  3. Ajax+setInterval定时异步刷新页面

    这个是之前一个项目中用到的功能,现在记录一下他的使用步骤. 现在讲解一下具体的关键代码: 1.   window.onload:是指等待页面html和css都执行完毕以后才开始执行js文件,因为我这个 ...

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

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

  5. dvi接口介绍

    Most graphics cards and motherboards feature a Digital Video Interface (DVI) connector for connectin ...

  6. linux批量配置ip

    获取使用的网卡接口 ip a 2.查看系统版本 cat /etc/redhat-release 3.执行配置脚本 wget  http://d.sshby.com/biaozhun.tar&& ...

  7. 解决:SSM框架中普通类调用Service的问题 (转)

    http://blog.csdn.net/gwd1154978352/article/details/73480959

  8. c# 多线程简化

    编译器自动推断出ParameterizedThreadStart委托,因为Go方法接收一个单独的object参数,就像这样写: 1 2 Thread t = new Thread (new Param ...

  9. 4、static

    static (静态的),用来修饰成员. 一.特点: 1.被修饰的方法或变量随着类的加载而加载 2.优先于对象存在 3.被所有的对象共享 4.除了可以被对象调用还可以被类名直接调用 二.类变量.成员变 ...

  10. JS设置、获取和取消Cookie

    // 设置cookie   function setCookie(name, value, seconds, domain) {       seconds = seconds || 0; // se ...