28 Django高级- 分页

简介: 28 Django高级- 分页

Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中。

1.Paginator对象

Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数。

1.1 属性
  • count:对象总数
  • num_pages:页面总数
  • page_range:页码列表,从1开始,例如[1, 2, 3, 4]
1.2 方法
  • page(num):下标以1开始,如果提供的页码不存在,抛出InvalidPage异常
1.3 异常exception
  • InvalidPage:当向page()传入一个无效的页码时抛出
  • PageNotAnInteger:当向page()传入一个不是整数的值时抛出
  • EmptyPage:当向page()提供一个有效值,但是那个页面上没有任何对象时抛出

2.Page对象

2.1 创建对象
  • Paginator对象的page()方法返回Page对象,不需要手动构造
2.2 属性
  • object_list:当前页上所有对象的列表
  • number:当前页的序号,从1开始
  • paginator:当前page对象相关的Paginator对象
2.3 方法
  • has_next():如果有下一页返回True
  • has_previous():如果有上一页返回True
  • has_other_pages():如果有上一页或下一页返回True
  • next_page_number():返回下一页的页码,如果下一页不存在,抛出InvalidPage异常
  • previous_page_number():返回上一页的页码,如果上一页不存在,抛出InvalidPage异常
  • len():返回当前页面对象的个数
  • 迭代页面对象:访问当前页面中的每个对象

3.示例

3.1 创建视图pagTest
from django.core.paginator import Paginator
def pagTest(request, pIndex):
    list1 = AreaInfo.objects.filter(aParent__isnull=True)
    p = Paginator(list1, 10)
    if pIndex == '':
        pIndex = '1'
    pIndex = int(pIndex)
    list2 = p.page(pIndex)
    plist = p.page_range
    return render(request, 'booktest/pagTest.html', {'list': list2, 'plist': plist, 'pIndex': pIndex})
3.2 配置url
url(r'^pag(?P<pIndex>[0-9]*)/$', views.pagTest, name='pagTest'),
3.3 定义模板pagTest.html
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<ul>
{%for area in list%}
<li>{{area.id}}--{{area.atitle}}</li>
{%endfor%}
</ul>
{%for pindex in plist%}
{%if pIndex == pindex%}
{{pindex}}&nbsp;&nbsp;
{%else%}
<a href="/pag{{pindex}}/">{{pindex}}</a>&nbsp;&nbsp;
{%endif%}
{%endfor%}
</body>
</html>
目录
相关文章
|
4月前
|
JavaScript 数据库 Python
django实现增删改查分页接口
django实现增删改查分页接口
|
6月前
|
NoSQL 调度 Redis
33 Django高级 - celery
33 Django高级 - celery
26 0
|
6月前
|
自然语言处理 搜索推荐 索引
32 Django高级 - 全文检索
32 Django高级 - 全文检索
31 0
|
9月前
|
XML 中间件 数据格式
Django 高级指南:深入理解和使用类视图和中间件
Django 是一款强大的 Python Web 框架,它提供了一套完整的解决方案,让我们能够用 Python 语言快速开发和部署复杂的 Web 应用。在本文中,我们将会深入研究 Django 中的两个高级特性:类视图(Class-Based Views)和中间件(Middleware)。
|
6月前
|
负载均衡 应用服务中间件 nginx
34 Django高级 - 布署
34 Django高级 - 布署
17 0
|
6月前
|
缓存 NoSQL 数据库
31 Django高级 - 缓存
31 Django高级 - 缓存
28 0
|
6月前
|
Python
30 Django高级 - 富文本编辑器
30 Django高级 - 富文本编辑器
30 0
|
6月前
|
SQL 前端开发 JavaScript
29 Django高级- Ajax
29 Django高级- Ajax
30 0
|
6月前
|
数据安全/隐私保护 Python
27 Django高级- Admin站点
27 Django高级- Admin站点
36 0
|
6月前
|
存储 Python
26 Django高级- 上传图片
26 Django高级- 上传图片
20 0