}

传智播客旗下技术交流社区北京校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

django的分页我们引用它自带的Paginator就可以了

1、在usl.py中添加路由
#测试分页
url(r'^page/$', views.PageTurning),

2、view.py处代码
def PageTurning(request):
    data_li = ['join','paul','george','ringo']
    obj_li = models.Userinfo.objects.all()
    #表示一页显示3条数据
    p = Paginator(obj_li,3)

    print('数据总数:',p.count)
    print('数据页数:',p.num_pages)
    print('页码列表,range(x,y)',p.page_range)
    print('是否有下一页',p.page(2).has_next())
    print('是否有上一页',p.page(1).has_previous())
    print('是否有其他页',p.page(1).has_other_pages())
    print('下一页的页码',p.page(2).next_page_number())
    print('上一页的页码',p.page(2).previous_page_number())

    #获取页码,不输入页码的情况下,默认是1.页码获取的都是str,所以要int
    get_page = int(request.GET.get('page',1))
    try:
        obj_li = p.page(get_page)
    #如果页码不是一个整数,跳转到第一页
    except PageNotAnInteger:
        obj_li = p.page(1)
    #如果页数超出了页数范围,将定位到最后一页
    except EmptyPage:
        obj_li = p.page(p.num_pages)

    return render(request,'paging.html',locals())
    #return HttpResponse('测试分页')

访问http://127.0.0.1:8080/page
控制台会有输出:因为页码在里面被我写死了
数据总数: 11
数据页数: 4
页码列表,range(x,y) range(1, 5)
是否有下一页 True
是否有上一页 False
是否有其他页 True
下一页的页码 3
上一页的页码 1

3、templates中的html代码
新建一个paging.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>django分页</title>
</head>
<body>
<div class="container">
    <h4>用户表分页展示</h4>
    <table>
         <tbody>
            {% for item in obj_li %}
                <tr>
                    <td>{{ item.username }}</td>
                    <td>{{ item.password }}</td>
                    <td>{{ item.name}}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
<div>
    <ul class="pagination" id="pager">
        <!--如果有上一页就拿到上一页的地址-->
        {% if obj_li.has_previous %}
            <li class="previous"><a href="/page/?page={{ obj_li.previous_page_number }}">上一页</a></li>
        {% else %}
            <li class="previous disabled"><a href="#">上一页</a></li>
        {% endif %}

        <!--遍历页数列表-->
        {% for num in p.page_range %}
            {% if num == page %}
                <li class="item active"><a href="/page/?page={{ num }}">{{ num }}</a></li>
            {% else %}
                <li class="item"><a href="/page/?page={{ num }}">{{ num }}</a></li>
            {% endif %}
        {% endfor %}
                <!--如果有下一页就拿到下一页的地址-->
        {% if obj_li.has_next %}
            <li class="next"><a href="/page/?page={{ obj_li.next_page_number }}">下一页</a></li>
        {% else %}
            <li class="next disabled"><a href="#">下一页</a></li>
        {% endif %}
    </ul>
</div>
</div>
</body>
</html>

此时我们就可以通过页面测试分页了,因为没有样式,所以显示不好看,但是功能齐全


分享至 : QQ空间
收藏

1 个回复

倒序浏览
奈斯,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马
关闭

站长推荐 上一条 /5 下一条