Django高级应用之分页

一、Paginator对象

(1)创建对象

1)格式:Pageinator(列表,整数)

2)返回值:返回的分页对象

(2)属性

1)count:对象总数

2)num_pages:页面总数

3)page_range:页码列表,页码从1开始

(3)方法

1page(num):获得page对象,如果提供的页码不存在会抛出”InvalidPage”异常

(4)异常

1)InvaildPage:当向Page()传递的是一个无效的页码时抛出的异常

2)PageNotAnInteger:当向Page()传递的不是一个整数时

3)EmptyPage:当向Page()传递一个有效值,但是该页面上没有数据时抛出

二、Page对象

(1)创建对象

Paginator对象的page()方法返回得到Page对象

不需要手动创建

(2)属性

1)object_list:当前页上所有的数据(对象)列表

2)number:当前页的页码值

3)Paginator:当前page对象关联的paginator对象

(3)方法

1)has_nest():判断是否有下一页,如果有返回Ture

2)has_previous():判断是否有上一页,如果有返回Ture

3)has_other_pages():判断是否有上一页或下一页,如果有返回True

4)next_page_number():返回下一页的页码,如果下一页不存在抛出InvaildPage异常

5)Previous_page_number():返回上一页的页码,如果上一页不存在抛出InvaildPage异常

6)len():返回当前页的数据(对象)个数

三、Pageinator对象与Page对象的关系


四、实现

编写urls.py文件

url(r'^studentpage/(\d+)/$', views.studentpage),

编写views.py文件

from .models import Students
from django.core.paginator import Paginator
def studentpage(request,pageid):
    #所有学生的列表
    allList = Students.objects.all()
    paginator = Paginator(allList,6)
    page = paginator.page(pageid)
    return render(request,'myApp/studentpage.html',{"students":page})

创建一个studentspage.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学生分页显示</title>
</head>
<body>
    <ul>
        {% for stu in students %}
            <li>
                {{stu.sname}}--{{stu.sgrade}}
            </li>
        {% endfor %}

    </ul>
    <ul>
        {% for index in students.paginator.page_range %}
            {% if index == students.number %} <!--若是当前页则无法点击-->
                <li>
                    {{index}}
                </li>
            {% else %}
                <li>
                    <a href="/studentpage/{{index}}">{{index}}</a>
                </li>
            {% endif %}
        {% endfor %}
    </ul>
</body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值