后台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
个人小结,定有不足,欢迎指点。
谢谢~