分页:把从数据库中的数据分为多页在客户端显示。

在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_分页的更多相关文章

  1. 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题

    最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...

  2. js实现前端分页页码管理

    用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...

  3. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  4. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  5. NET Core-TagHelper实现分页标签

    这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...

  6. 套用JQuery EasyUI列表显示数据、分页、查询

    声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...

  7. php实现的分页类

    php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...

  8. C#关于分页显示

    ---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...

  9. JAVA 分页工具类及其使用

    Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...

随机推荐

  1. windows服务器装macos虚拟机(vmware)系统

    VMware14安装黑苹果macOS10.13流程 一.准备工具 VMware Workstation 14.1.2 Pro macOS High Sierra 10.13.iso格式或.cdr格式( ...

  2. go语言从例子开始之Example5.for循环

    for 是 Go 中唯一的循环结构.这里有 for 循环的三个基本使用方式. package main import "fmt" func main() { 最常用的方式,带单个循 ...

  3. mysql查询表的创建时间

    mysql查询表的创建时间 查询语句: SELECT table_name,create_time FROM information_schema.TABLES;

  4. Mac上无法使用蓝牙时的7个修复程序

    蓝牙是一个很普遍的技术,除非它出现问题,你才会发现它.例如,你听歌很顺利时,直到AirPods突然断连.大多数时候,这是一个相对容易的修复,但有时可能会有些棘手. https://www.macdow ...

  5. 【CSS】position(定位)属性

    关于CSS position,来自MDN的描述: CSS position属性用于指定一个元素在文档中的定位方式.top.right.bottom.left 属性则决定了该元素的最终位置. 然后来看看 ...

  6. djangorestframework-jwt 分页器 三种

    数据准备 # models class Teacher(models.Model): name = models.CharField(max_length=32) salary = models.De ...

  7. Mybatis基于XML配置SQL映射器(三)

    Mybatis之动态SQL mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: if choo ...

  8. ShellListView

    過濾ShellListView顯示的檔案 有關這方面的元件你可以在Win3.中找到相關元件 你可以使用四個元件搭配應該就可以你所需要的功能 DriveComboBox1.FilterComboBox1 ...

  9. 深入研究CSS

    通常我们在学习CSS的时候,感觉很容易掌握,却常常在实际应用中碰到各式各样难以填补的“坑”,为避免大家受到同样的困惑与不解,本文详细讲解了CSS中优先级和Stacking Context等诸多高级特性 ...

  10. switch 使用使用小技巧

    for (int i=0;i<100;i++) { switch (i) { case 1 ... 10: NSLog(@"case 1 ... 10: = %d",i); ...