所需环境
Flask-SQLAlchemy
分页
使用Flask-SQLAlchemy提供的pagination()方法。页数是pagination()方法的第一个参数,也是唯一必须的参数。可选参数per_page用来指定每页显示的记录数。
参考代码:
def index():
# ...
page = request.args.get('page', 1, type=int)
pagination = Post.query.order_by(Post.timestamp.desc()).paginate(
page, per_page=current_app.config['FLASKY_POST_PER_PAGE'], error_out=False)
post = pagination.items
return render_template('index.html',form=form,posts=posts,pagination=pagination)
添加导航栏
pagination()方法的返回值是一个Pagination类对象,这个类在Flask-SQLAlchemy中定义。 这个对象包含很多属性,用于在模板中生成分页链接。
Jinja2宏实现的分页导航:
{% macro pagination_widget(pagination, endpoint) %}
{% for p in pagination.iter_pages() %}
{% if p %}
{% if p == pagination.page %}
{{ p }}
{% else %}
{{ p }}
{% endif %}
{% else %}
…{% endif %}
{% endfor %}
»
{% endmacro %}