Django高级应用之分页

一、Paginator对象

(1)创建对象

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

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

(2)属性

1)count:对象总数

2)num_pages:页面总数

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

(3)方法

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

(4)异常

扫描二维码关注公众号,回复: 955072 查看本文章

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>



猜你喜欢

转载自blog.csdn.net/weixin_38654336/article/details/80044348