所需環境
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 %}