python_django_分页
分页:把从数据库中的数据分为多页在客户端显示。
在django中,可通过这两个对象来实现:
- Paginator对象
- Page对象
Paginator对象与Page对象的关系:
paginator对象调用自身的page方法就会生成page对象(一页就是一个page对象)
一、Paginator对象
1.创建对象
Paginator(要分页的列表,每一页的条数(对象个数))
2.属性
| count | 对象总数(一页多少条) |
| num_pages | 页面总数 |
| page_range | 页面列表,页码从1开始 |
3.方法
- page(num):获取page对象,num就是获得的页码,如果提供的页码不存在会抛出'InvalidPage'异常
4.异常
| InvalidPage | 当向page()传递的是一个无效的页码时抛出 |
| PageNotAnInteger | 当向page()传递的不是一个整数时抛出 |
| EmptyPage | 当向page()传递一个有效值,但是该页面没有数据时抛出 |
二、Page对象
1.创建对象
- 不需要手动创建,由Paginator对象调用page()方法返回得到Page对象
2.属性
| object_list | 当前页面上所有数据(对象)列表 |
| number | 当前页的页码值 |
| paginator | 引用生成page对象的paginator对象 |
3.方法
| has_next() | 判断是否有下一页,若有返回True |
| has_previous() | 判断是否有上一页,若有返回True |
| has_other_pages() | 判断是否有上一页或下一页,若有一个有返回True |
| next_page_number() | 返回下一页的页码,若下一页不存在抛出'InvalidPage'异常 |
| previous_page_number() | 返回上一页的页码,若上一页不存在抛出'InvalidPage'异常 |
| len() | 返回当前页的数据(对象)个数 |
举个栗子:
对应view.py文件
# 分页
from django.shortcuts import render
from .models import Students
from django.core.paginator import Paginator
def studentpage(request,pageid):
# 所有学生列表
allList = Students.stuObj.all()
paginator = Paginator(allList,4) # 分为几页
page = paginator.page(pageid) # 每次拿一页
return render(request,'myapp/studentpage.html',{'students': page})
对应url.py文件
url(r'studentpage/(\d+)/$', views.studentpage),
对应html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生分页显示</title>
</head>
<body>
<ul>
{% for stu in students %}
<li>
{{stu.name}}--{{stu.age}}
</li>
{% endfor %}
</ul>
<ul style="list-style-type:none">
{% for i in students.paginator.page_range %}
{% if i == students.number %}
{{ i }}
{% else %}
<li style="border:1px solid black; display:inline;">
<a href="/sunck/studentpage/{{i}}/" style="text-decoration:none;padding:2px;">{{i}}</a>
</li>
{% endif%}
{% endfor %}
</ul>
</body>
</html>
效果:

python_django_分页的更多相关文章
- 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- js实现前端分页页码管理
用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- 套用JQuery EasyUI列表显示数据、分页、查询
声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...
- php实现的分页类
php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...
- C#关于分页显示
---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...
- JAVA 分页工具类及其使用
Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...
随机推荐
- MySQL日志文件与分析
1.查询日志.慢查询日志.二进制日志对比 查询日志 general_log 会记录用户的所有操作,其中包含增删查改等 可以指定输出为表 慢查询日志 slow_log 只要超过定义时间的所有操作语句都记 ...
- RxJava总结(原)
1.RxJava的作用 RxJava is a Java VM implementation of Reactive Extensions: a library for composing async ...
- Windows 命令提示符
命令提示符(cmd): 启动:Win+R ,输入cmd回车 切换盘符:盘符名称: 进入文件夹:cd 文件夹名称 进入多级文件夹:cd 文件夹1\文件夹2\文件夹3 返回上一级:cd .. 直接回根路径 ...
- numpy 数组中添加新元素
import numpy as npnew_array = np.empty(shape=[0, 3]) # 3列n行for i in range(10): x = i+1 y = i+2 z = i ...
- ORA-20782: Creating GGS_DDL_RULES
在11g数据库上安装goldengate,运行@ddl_setup.sql时有如下错误 ERROR at line 1: ORA-20782: Creating GGS_DDL_RULES table ...
- python3.x 扯扯【切片】这玩意儿
在此之前先了解一下list这个玩意儿: list对应cpp这的数组,一维数组,二维数组,或者是嵌套都行: L=[] #空列表 L=[1,2,3,4,5,6] #六项 L=['a',['b','c']] ...
- laravel5.6 基于redis,使用消息队列(邮件推送)
邮件发送如何配置参考:https://www.cnblogs.com/clubs/p/10640682.html 用到的用户表: CREATE TABLE `recruit_users` ( `id` ...
- 双11大考 POLARDB分钟级弹性让企业轻松扩展
无处不在的脉冲计算 阿里有双11,中国有春运,高考后有分数出来的那天,歌迷心中有周杰伦演唱会门票在线开售之时....有人的地方就有江湖,有人的地方也有脉冲计算,这些热点事件背后都需要大量的计算资源给予 ...
- 阿里云移动研发平台EMAS,是如何连续5年安全护航双11的?
摘要: 阿里云作为阿里巴巴IT基础设施的基石,每年的双十一都面临前所未有的巨大技术挑战.阿里云的EMAS移动研发平台,连续5年支持双11,不仅保障了手机淘宝.支付宝这些阿里巴巴集团App的使用体验,也 ...
- 经典的MySQL Duplicate entry报错注入
SQL注射取数据的方式有多种: 利用union select查询直接在页面上返回数据,这种最为常见,一个前提是攻击者能够构造闭合的查询. Oracle中利用监听UTL_HTTP.request发起的H ...