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; ...
随机推荐
- Oracle Linux下使用sqlplus的edit命令
1.使当前会话生效 define_editor=vi SQL> select * from dual; D - X SQL> edit Wrote file afiedt.buf 21 1 ...
- 从零开始做一个Android自动化
移动端自动化简单说就是,写好操作app的程序,运行起来,自动执行程序和测试用例,输出执行结果,结果正确,测试通过. 自动化可以方便地完成安装/卸载.启动/运行.UI适配等环节,节省时间: 同一测试脚本 ...
- Python3.5-20190504-廖老师的2-if elif else continue break
条件判断: if 条件1: 代码块 elif 条件2: 代码块 else 条件3: 代码块 brith = input("请输入出身年月:") if brith > 200 ...
- oracle中sys,system,scott,hr用户
https://blog.csdn.net/xingfeng0501/article/details/6699390 scott 是个演示用户,是让你学习ORACLE用的 hr用户是个示例用户,是在创 ...
- 【和孩子一起学编程】 python笔记--第三天
第十章 游戏时间:Skier 首先安装pygame,直接在cmd命令控制框里键入pip install pygame就可以了 代码: import pygame, sys, random skier_ ...
- 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
一.题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 二.解题思路 1)简单暴力解法 ...
- mpu6050学习
一.MPU6050初始化 /**************************实现函数******************************************** *函数原型: ...
- html{-webkit-text-size-adjust:none;}(取消浏览器最小字体限制)
2016年10月13日 09:31:58 ITzhongzi 阅读数 9409 1.当样式表里font-size<12px时,中文版chrome浏览器里字体显示仍为12px,这时可以用 ht ...
- android:layout_gravity和android:gravity的区别 (转)
转:http://blog.csdn.net/shakespeare001/article/details/7843460 1.首先来看看android:layout_gravity和android: ...
- GIL - global interpreter lock
python是一个解释型语言,但是可以使用多个解释器.比如C++,但是可以用不同的编译器来编译成可执行代码.有名的编译器例如GCC,INTEL C++,Visual C++等.Python也一样,同样 ...