Flask分页的实现方法

所需环境

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 %}

你可能感兴趣的:(Flask分页的实现方法)