Django:分页

一、分页的定义

在这里插入图片描述

二、Paginator类和Paginator对象

1、Paginator对象

在这里插入图片描述

2、Paginator属性

在这里插入图片描述

3、Paginator方法

在这里插入图片描述

4、Paginator异常

在这里插入图片描述

三、Page对象

1、Page对象的定义和属性

在这里插入图片描述

2、Page对象的方法

在这里插入图片描述

四、代码实现

1、模板templates中的test_page.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分页</title>
</head>
<body>


{#    要实现的效果#}
{#    上一页  1  2  3  下一页#}


{#使用for循环拿到当前页面上的所有数据对象(for循环中的c_page相当于c_page.object_list)#}
{% for p in c_page %}

    <p>
        {{ p }}
    </p>

{% endfor %}


{# 0、实现上一页 #}
    {# 若有上一页,则拿到上一页的页码超链接 #}
    {% if c_page.has_previous %}
        <a href="/test_page?page={{ c_page.previous_page_number }}">上一页</a>

        {# 若没有上一页,则显示为普通的字符即可 #}
    {% else %}
        上一页
    {% endif %}


{# 1、实现中间部分 #}
    {#使用循环拿到每个页面#}
    {% 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 %}









{# 2、实现下一页 #}
    {# 若有下一页,则拿到下一页的页码超链接 #}
    {% if c_page.has_next %}
        <a href="/test_page?page={{ c_page.next_page_number }}">下一页</a>

        {# 若没有下一页,则显示为普通的字符即可 #}
    {% else %}
        下一页
    {% endif %}

</body>
</html>

2、视图函数views.py中

def test_page(request):

    # 0、使用查询字符串获取路由中的页码(/test_page?page=1)
    page_num = request.GET.get('page',1)

    all_data = ['a','b','c','d','e']

    # 1、初始化paginator
    paginator = Paginator(all_data, 2)  # 传入的参数(要分页的数据,每页要显示的数据条数)

    # 2、初始化具体页码对应的page对象
    c_page = paginator.page(int(page_num))

    # 3、将值传入模板
    return render(request,'test_page.html',locals())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值