django

Django-25 分页

2021-08-01  本文已影响0人  JuliusL

Paginator 对象

负责分页数据整体的管理
对象的构造方法
paginator = Paginator(object_list,per_page)

Paginator 属性

Paginator方法

paginator对象.page(number)

Paginator异常exception

InvalidPage:总的异常基类,包含以下两个异常子类

Page对象

负责具体某一页的数据的管理
创建对象
Paginator对象的page()方法返回Page对象
page = paginator.page(页码)

Page对象属性

Page对象方法

例子

分页Demo.png

/templates/index/test_page.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>分页</title>
</head>
<body>
    
{% for p in c_page %}
    <p>
        {{p}}
    <p>
{% endfor %}

{% if c_page.has_previous %}
    <a href="/test_page?page={{ c_page.previous_page_number }}">上一页</a>
{% else %}
    上一页
{% endif %}

{% for p_num in paginator.page_range %}
    {% if p_num == c_page.number %} 
        {{ p_num }}
    {% else %}
        <a href="/test_page?page={{ p_num }}">{{ p_num }}</a>
    {% endif %}
{% endfor %}

{% if c_page.has_next %}
    <a href="/test_page?page={{c_page.next_page_number}}">下一页</a>
{% else%}
    下一页
{% endif %}

</body>
</html>

views.py

def test_page(request):
    #/test_page/4
    #/test_page?page=1
    page_num = request.GET.get('page',1)
    all_data = ['a','b','c','d','e','f','g','h','i']
    #初始化paginator
    paginator = Paginator(all_data,2)
    #初始化,具体页码的page对象
    c_page = paginator.page(int(page_num))
    return render(request,'index/test_page.html',locals())
上一篇下一篇

猜你喜欢

热点阅读