分页展示
-
分页查询
方法:paginate,分页查询方法 参数: page:当前页码 per_page:每页多少条数据 error_out:当查询有误时是否报错,默认为True 返回值: 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 %}
-
使用:
{% from 'common/macro.html' import show_pagination %} {{ show_pagination(pagination, 'main.index', uid=3) }}