Skip to content

Instantly share code, notes, and snippets.

@UlricQin
Created April 18, 2014 07:32
Show Gist options
  • Save UlricQin/11029483 to your computer and use it in GitHub Desktop.
Save UlricQin/11029483 to your computer and use it in GitHub Desktop.
python flask pager macro
{% macro pager(_uri, total, limit, curr_page, left=3, right=7) -%}
{% if '?' in _uri %}
{% set uri = _uri + '&' %}
{% else %}
{% set uri = _uri + '?' %}
{% endif %}
{% if total > limit %}
{% set page_num = total//limit if total%limit==0 else total//limit+1 %}
{% set pre_page = curr_page - 1 %}
{% set pre_page = 1 if pre_page < 1 else pre_page %}
{% set next_page = curr_page + 1 %}
{% set next_page = page_num if next_page > page_num else next_page %}
{% set begin_idx = 1 if curr_page <= 3 else curr_page - left %}
{% set end_idx = begin_idx + right %}
{% set end_idx = page_num if end_idx > page_num else end_idx %}
<ul class="pagination pagination-sm">
{%if curr_page > 1 %}
<li><a href="{{uri}}p=1">首页</a></li>
<li><a href="{{uri}}p={{pre_page}}">&lt;</a></li>
{%else%}
<li class="disabled"><a>首页</a></li>
<li class="disabled"><a>&lt;</a></li>
{%endif%}
{% for idx in range(begin_idx, end_idx+1) %}
<li class="{%if curr_page == idx %}active{%endif%}">
<a href="{{uri}}p={{idx}}">{{idx}}</a>
</li>
{% endfor %}
{%if curr_page < page_num %}
<li><a href="{{uri}}p={{next_page}}">&gt;</a></li>
<li><a href="{{uri}}p={{page_num}}">尾页</a></li>
{%else%}
<li
class="disabled"><a>&gt;</a></li>
<li
class="disabled"><a>尾页</a></li>
{%endif%}
</ul>
{%endif%}
{%- endmacro %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment