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> {# 分页结束 #}效果如下