分页显示
方法:paginate,分页查询
参数:
page:当前的页码
per_page:每页的条数
error_out:当查询出错时是否报错
返回值:
Pagination:分页对象,包含了所有的分页信息
Pagination:
属性:
page:当前页码
per_page:每页的条数,默认为20条
pages:总页数
total:总条数
prev_num:上一页的页码
next_num:下一页的页码
has_prev:是否有上一页
has_next:是否有下一页
items:当前页的数据
方法:
iter_pages:返回一个迭代器,在分页导航条上显示的页码列表,显示不完的时返回None
prev:上一页的分页对象
next:下一页的分页对象
-
封装分页显示的宏
{% macro show_pagination(pagination, endpoint) %} <nav aria-label="Page navigation"> <ul class="pagination"> {# 上一页 #} <li {% if not pagination.has_prev %}class="disabled"{% endif %}> <a href="{% if pagination.has_prev %}{{ url_for(endpoint, page=pagination.prev_num, **kwargs) }}{% else %}#{% endif %}" aria-label="Previous"> <span aria-hidden="true">«</span> </a> </li> {# 中间页码 #} {% for p in pagination.iter_pages() %} {% if p %} <li {% if pagination.page == p %}class="active"{% endif %}><a href="{{ url_for(endpoint, page=p, **kwargs) }}">{{ p }}</a></li> {% else %} <li><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.next_num, **kwargs) }}{% else %}#{% endif %}" aria-label="Next"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav> {% endmacro %}