视图函数:
@app.route('/')
@login_required
def index():
page=request.args.get('page',1,type=int)
pagination=User.query.order_by(User.createTime.desc()).paginate(page,per_page=12,error_out=False)
users=pagination.items
return render_template('index.html', name=current_user.username,users=users,pagination=pagination)
pagination对象的方法属性:
items 记录
query 分页的查询源
page 当前页数
prev_num
next_num
has_next
has_prev
pages 总页数
per_page 每页的记录数量
total 总记录数
自定义分页的宏,以及引用
{% macro pagination_widget(pagination, endpoint) %}
<ul class="pagination">
<li{% if not pagination.has_prev %} class="disabled"{% endif %}>
<a href="{% if pagination.has_prev %}{{ url_for(endpoint,page = pagination.page - 1, **kwargs) }}
{% else %}#{% endif %}">«
</a>
</li>
{% for p in pagination.iter_pages() %}
{% if p %}
{% if p == pagination.page %}
<li class="active">
<a href="{{ url_for(endpoint, page = p, **kwargs) }}">{{ p }}</a>
</li>
{% else %}
<li>
<a href="{{ url_for(endpoint, page = p, **kwargs) }}">{{ p }}</a>
</li>
{% endif %}
{% else %}
<li class="disabled">
<a href="#">…</a>
</li>
{% endif %}
{% endfor %}
<li{% if not pagination.has_next %} class="disabled"{% endif %}>
<a href="{% if pagination.has_next %}{{ url_for(endpoint,page = pagination.page + 1, **kwargs) }}{% else %}#{% endif %}">»</a>
</li>
</ul>
{% endmacro %}
{% import "_macros.html" as macros %}
..........其他代码省略...........
{%if pagination%}
<div class="pagination">
{{ macros.pagination_widget(pagination, '.index') }}
</div>
{% endif %}