Django 框架10: 分页器的使用

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

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

2.属性
    count:对象总数
    num_pages:页面总数
    page_range:页码列表,从1开始,例如[1, 2, 3, 4]

3.方法
    page(num):下标以1开始,如果提供的页码不存在,抛出InvalidPage异常

4.异常exception
    InvalidPage:当向page()传入一个无效的页码时抛出
    PageNotAnInteger:当向page()传入一个不是整数的值时抛出
    EmptyPage:当向page()提供一个有效值,但是那个页面上没有任何对象时抛出

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

6.示例
    创建视图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})

    配置url

url(r'^pag(?P<pIndex>[0-9]*)/$', views.pagTest, name='pagTest'),

    定义模板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}}
        {%else%}
            <a href="/pag{{pindex}}/">{{pindex}}</a>
        {%endif%}
    {%endfor%}
</body>
</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值