Flask分页功能的实现

Y30


后台views.py代码:

# 渲染信息页面
@article.route('/lease_info/',endpoint='lease_info')
def lease_info():
	# 默认第一野,且页面为整数
    page = int(request.args.get('page', 1))
    # 查询对应模型的所有数据,并设置每页几条数据
    paginate = User.query.paginate(page, 5)
    # 查询的所有数据以分页形式赋给arts
    arts = paginate.items
    # 渲染并返回给前段数据
    return render_template('lease_info.html', arts=arts, paginate=paginate)

注意:
1、页面的参数从请求的查询字符串 request.args中获取,如果不写,则默认为第一页。 Int 保证参数为整数。

2、为了显示某页中的记录,要把all()换成flask-SQLALchemy提供的paginate()方法。页数为paginate的第一个参数,第二个参数是每页显示的条数,如果没有指出,默认为20个记录。

前段代码:

<div class="page">
        {% if paginate.has_prev %}
            <a style="margin-right: -5px" href="{{ url_for('user.user_list') }}?page={{ paginate.prev_num }}">上一页</a>
        {% else %}
            <a style="margin-right: -5px" href="#">上一页</a>
        {% endif %}
    <span class="pagex">
        {% for i in paginate.iter_pages() %}
            <a href="{{ url_for('user.user_list',_external=True) }}?page={{ i }}">
                {% if not i %}
                    ...
                {% else %}
                    {{ i }}
                {% endif %}
            </a>
        {% endfor %}
    </span>
        {% if paginate.has_next %}
            <a href="{{ url_for('user.user_list') }}?page={{ paginate.next_num }}">下一页</a>
        {% else %}
            <a href="#">下一页</a>
        {% endif %}
    </div>

关键字说明:
paginate.pages 显示一共有多少页
paginate.page 当前页
paginate.has_prev 是否有上一下
paginate.prev_num 上一页的id
paginate.has_next 是否有下一页
paginate.next_num 下一页的id
iter_page:一个迭代器,返回一个在分页导航中显示的页数列表


原博客推荐:
https://www.jianshu.com/p/0b30d035d1b5


个人小结,定有不足,欢迎指点。
谢谢~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值