Flask分页

本文介绍了在SQL中实现分页查询的三种方法:使用offset+limit、切片操作以及paginate函数。详细展示了每种方法的具体实现步骤及前端展示方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分页

实现分页

1.使用offset+limit
2. 切片实现,注意:[0,2]取到的是0,1,2,并且切片时,如果超过下标界限,并不会报错,返回一个空列表
3. 使用paginate实现

1.使用offset+limit

page = int(request.args.get('page',1))
num = 5
students = Student.query.offset((page-1) * num).limit(num)

2. 切片实现

students = Student.query.all()[(num * (page-1)):(page*num)]

3. 使用paginate实现

方法:
paginate = Student.query.paginate(page, 5)
iter_pages()  获取所有页码的列表

属性:
items --    当前页面中的数据

query --    分页的原查询

page --     当前页数

perv_num -- 上一页的页数

next_num    下一页的页数

has_next    如果有下一页,返回true

has_prev    如果有上一页,返回true

pages       查询得到的总页数

per_page    每页显示的记录数量

total       查询返回的记录总数


后端代码:
    paginate = Student.query.paginate(page, 5)
    # 拿到当前页的数据
    students = paginate.items

    return render_template('stus.html',stus=students,paginate=paginate)



前端例子:
    当前页: {{ paginate.page }}
    当前总页: {{ paginate.pages }}
    总条数: {{ paginate.total }}
    

    <!-- 判断是否有上一页 -->
    {% if paginate.has_prev %}
        <a href="{{ url_for('app.stu_paginate') }}?page={{ paginate.prev_num }}"">上一页</a>
    {% endif %}

    <!-- 获取页码的列表 -->
    {% for i in paginate.iter_pages() %}
        <!--<a href="/app/paginate/?page={{ i }}">{{ i }}</a>-->
        <a href="{{ url_for('app.stu_paginate') }}?page={{ i }}">{{ i }}</a>
    {% endfor %}

    <!-- 判断是否有下一页 -->
    {% if paginate.has_next %}
        <a href="{{ url_for('app.stu_paginate') }}?page={{ paginate.next_num }}">下一页</a>
    {% endif %}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值