分页实现思路:

1.接口拉取库内数据,进行分页
2.页面实现分页组件,切换不同链接

一、接口实现:

from django.core.paginator import Paginator

p=Paginator(report.objects.order_by("-endtime"),20)  #对数据进行分页,默认每页20条数据
pagenums=p.num_pages
说明:
1.使用Paginator类进行分页,使用方法【Paginator(列表,一页显示的内容个数)】
例如:Paginator(report.objects.order_by("-endtime"),20)
入参列表可以是个models查询后的django QuerySet对象
 
2.Paginator对象的num_pages返回查询结果的总个数,可以用来展示分页的页数
 
更多Paginator的操作,可以参考下面的 文档:
 

二、html分页展示

<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title> <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" >
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<ul class="pagination" >
{% if pagenum > 1%}
<li><a href="{% url 'reports' %}?pagenum={{ pagenum|add:-1 }}">&laquo;</a></li>
{% else %}
<li><a href="">&laquo;</a></li>
{% endif %}
{% for currentpagenum in reportinfos.pagenums%}
{% if currentpagenum == pagenum %}
<li><a href="{% url 'reports' %}?pagenum={{ currentpagenum }}" style="background-color: #5bc0de">{{ currentpagenum }}</a></li>
{% else %}
<li><a href="{% url 'reports' %}?pagenum={{ currentpagenum }}">{{ currentpagenum }}</a></li>
{% endif %}
{% endfor %}
{% if pagenum < reportinfos.maxpagenum %}
<li><a href="{% url 'reports' %}?pagenum={{ pagenum|add:1 }}">&raquo;</a></li>
{% else %}
<li><a href="">&raquo;</a></li>
{% endif %}
</ul>
</body> </html>
 
 
说明:
1.分页使用了bootstrap的样式,所以引入了相关的js
2.分页的按钮的连接点击跳转到对应页面加参数pagenum(/xxx?pagenum=xxx)(html中的pagenum为渲染时传入的总页码个数)
3.前一页和后一页按钮,判断了是否超过最小页码1和最大页码边界,如果不超过跳转链接在当前页码下+1或-1,如果超出边界则不能点击
 
这里应用了django模板中变量的加减法,加法【{{ 变量名|add:数字 }}】,减法【{{ 变量名|add:-数字 }}】
减法只是数字前加负号,注意|和add以及:左右没有空格
 
 
 
 
 

django实现分页的更多相关文章

  1. 第二十一章 Django的分页与cookie

    第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...

  2. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  3. Django----列表分页(使用Django的分页组件)

    目的:是为了实现列表分页 1.定制URL http://127.0.0.1:8000/blog/get_article?page=3之前定制URL是在url后增加了/id,这次使用参数的方式 def ...

  4. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  5. Django自定义分页并保存搜索条件

    Django自定义分页并保存搜索条件 1.自定义分页组件pagination.py import copy class Pagination: def __init__(self, current_p ...

  6. Django DRF 分页

    Django DRF 分页 分页在DRF当中可以一共有三种,可以通过setttings设置,也可也通过自定义设置 PageNumberPagination 使用URL http://127.0.0.1 ...

  7. django之分页,纯python代码

    Django中分页 py文件代码 """ 自定义分页组件 可以返回分页的数据和分页的HTML代码 """ from django.http ...

  8. django之分页、cookie装饰器

    一.分页代码如下 from django.utils.safestring import mark_safe class Page: def __init__(self, current_page, ...

  9. django的分页--不全也未实现

    一.Django内置分页 Paginator 二.自定义分页 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该在数据库表中的起始位置. 1.设定每页显示数据条数 2.用户输 ...

  10. Django自定义分页、bottle、Flask

    一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1"> ...

随机推荐

  1. putty的小兄弟psftp的使用

    1.双击运行psftp.exe 双击直接运行psftp.exe程序 2.open目标地址 运行psftp后,使用open指令连接目标机器,如: psftp>open 127.0.0.1 3.输入 ...

  2. 《算法》BEYOND 部分程序 part 2

    ▶ 书中第六章部分程序,加上自己补充的代码,包括快速傅里叶变换,多项式表示 ● 快速傅里叶变换,需要递归 package package01; import edu.princeton.cs.algs ...

  3. Linux——JDK配置

    一.安装jdk-7u21-linux-x64.rpm文件 [root@centos6 local]# rpm –ivh  jdk-7u21-linux-x64.rpm 二.防火墙开放8080端口 (在 ...

  4. Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean)

    eclipse在使用maven的tomcat控件编译java程序时,报错 Failed to execute goal org.apache.maven.plugins:maven-clean-plu ...

  5. 阿里巴巴开源项目: canal

    参考:https://www.cnblogs.com/duanxz/p/5062833.html docker 部署canal :  https://blog.csdn.net/u013705066/ ...

  6. Oracle创建表及管理表

    转自:https://www.linuxidc.com/Linux/2018-05/152566.htm   1. Oracle表的创建及管理 创建表包括三个要素,表名,列名,数据类型.每个表都有对应 ...

  7. sql 日期格式

    select CONVERT(varchar(10), getDate(),121) --不要时间2002-01-01 select CONVERT(varchar(10), getDate(),12 ...

  8. 腾讯云Linux VPS新硬盘分区与挂载教程(面板重装不丢失数据)

    以腾讯云Centos系统服务器为例,小记的是数据盘不在本地,大小为20G,以下的教程来自小夕博客的一篇相关添加教程的修改,适合腾讯云Linux Centos系统.说明:参数也许不对,我没有截图了,但所 ...

  9. C#反射机制详解

    反射的定义:审查元数据并收集关於它的类型信息的能力,元数据(编辑后的基本数据单元)就是一大堆表,编译器会创建一个类定义表,一个字段定义表,一个方法定义表等,System.Reflection命名空间包 ...

  10. Windows系统封装总结

    注:使用虚拟机或者实体机进行封装均可,实体机进行封装的成功率更高.虚拟机进行封装建议使用VMware,12版本.过高的版本容易造成封装失败 一.            Windows 10系统封装 1 ...