flask分页使用paginate(), 返回一个分页对象,参数如下
paginate(page=当前页, per_page=每页多少条, max_per_page=每页最大多少条)
具体使用
1、后端
从数据库查询数据,在后面加上paginate函数,得到分页对象,返回前端渲染
pagination = Article.query.order_by().paginate(page=p, per_page=2, max_per_page=20)
return render_template('index.html', page=page)
pagination具体的属性
pagination.items # 当前页的每条记录对象(list)
pagination.page # 当前页码
pagination.prev_num # 前一页页码
pagination.next_num # 后一页页码
pagination.has_next # 是否有下一页(true, false)
pagination.has_prev # 是否有上一页
pagination.pages # 总页数
pagination.total # 数据库的总的记录数
2、前端渲染
{% for article in page.items %} {# 遍历分页对象列表 #}
。。。。。。
{% endfor %}
{# 分页开始 #}
{% if page.has_prev %}
<a href="{{ url_for('app.index') }}?page={{ page.prev_num }}">上一页</a>
{% endif %}
{% for page_num in range(1, page.pages + 1) %} {# 使用range函数 #}
<a href="{{ url_for('app.index') }}?page={{ page_num }}">{{ page_num }}</a>
{% endfor %}
{% if page.has_next %}
<a href="{{ url_for('app.index') }}?page={{ page.next_num }}">下一页</a>
{% endif %}
<span>共{{ page.pages }}页</span>
{# 分页结束 #}
效果如下