用于生成页码以进行分页的寻呼机

py-paginator的Python项目详细描述


PY分页器

paginator生成分页页码

Build Status

烧瓶框架的使用示例

  • app.py
fromflaskimportFlask,request,render_templatefrompy_paginatorimportPaginatorapp=Flask(__name__)app.jinja_env.add_extension('jinja2.ext.do')@app.route('/')defhome():page=int(request.args.get('page',1))limit=20records_count=get_records_count()# get records count from storagepaginator=Paginator(total_items=records_count,item_limit=limit,curr_page=page)records=get_records(limit=paginator.item_limit,offset=paginator.item_offset)# get records from storagereturnrender_template('home.html',records=records,paginator=paginator)

这里可以在数据库查询中使用paginator.item_limitpaginator.item_offset来应用限制。paginator对象可以在模板中用于创建分页链接。

  • templates/macros.html
{#
    :paginator: Paginator object
    :endpoint: flask request endpoint
    :pager: If True it will show a pager instead of numbered pagination

    - you can also pass further arguments that will be passed into `url_for()` of every link.
#}
{% macro render_pagination(paginator, endpoint=request.endpoint, pager=False) %}
    {% if paginator.has_pages %}
        {% do kwargs.update(request.args) %}
        {% do kwargs.pop('page', None) %}
        <navaria-label="Page navigation">
            {% if pager %}
                {% set pager = paginator.get_pager() %}
                <ulclass="pager"><liclass="previous{% if not paginator.has_prev %} disabled{% endif %}">
                        {% do kwargs.update({'page': pager.prev}) %}
                        <ahref="{% if paginator.has_prev %}{{ url_for(endpoint, **kwargs) }}{% else %}#{% endif %}"><spanaria-hidden="true">&laquo;</span> Prev</a></li><liclass="next{% if not paginator.has_next %} disabled{% endif %}">
                        {% do kwargs.update({'page': pager.next}) %}
                        <ahref="{% if paginator.has_next %}{{ url_for(endpoint, **kwargs) }}{% else %}#{% endif %}">Next <spanaria-hidden="true">&raquo;</span></a></li></ul>
            {% else %}
                <ulclass="pagination">
                    {% for page_type, page_num in paginator.get_pages() %}
                        {% do kwargs.update({'page': page_num}) %}
                        {% if page_type == 'prev' %}
                            {% if page_num %}
                                <li><ahref="{{ url_for(endpoint, **kwargs) }}"aria-label="Previous"><spanaria-hidden="true">&laquo;</span></a></li>
                            {% else %}
                                <liclass="disabled"><span><spanaria-hidden="true">&laquo;</span></span></li>
                            {% endif %}
                        {% elif page_type == 'next' %}
                            {% if page_num %}
                                <li><ahref="{{ url_for(endpoint, **kwargs) }}"aria-label="Next"><spanaria-hidden="true">&raquo;</span></a></li>
                            {% else %}
                                <liclass="disabled"><span><spanaria-hidden="true">&raquo;</span></span></li>
                            {% endif %}
                        {% elif page_type == 'ellip' %}
                            <liclass="disabled"><span><spanaria-hidden="true">&hellip;</span></span></li>
                        {% elif page_type == 'curr' %}
                            <liclass="active"><span>{{ page_num }}</span></li>
                        {% else %}
                            <li><ahref="{{ url_for(endpoint, **kwargs) }}">{{ page_num }}</a></li>
                        {% endif %}
                    {% endfor %}
                </ul>
            {% endif %}
        </nav>
    {% endif %}
{% endmacro %}
  • templates/home.html
{% from "macros.html" import render_pagination with context %}

<h1>Total Records: {{ paginator.total_items }}</h1><h2>Total Pages: {{ paginator.total_pages }}</h2>

{% for record in records %}
    <p>{{ loop.index + paginator.item_offset }} - {{ record.field_name }}</p>
{% else %}
    <p>No Records found.</p>
{% endfor %}

{{ render_pagination(paginator) }}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
哦,我需要在这里重建Java吗?   java在按键后做一些事情(但需要等待一点)   java迭代ArrayList的泛型类型<User>   Android Studio和WebStorm之间的java语言级别不一致   java如何在复杂模型中使用@valid注释   Java字符串初始化为基元类型   java外键级联删除在OpenJPA/Postgresql中未按预期工作   java运行时堆分析;匹配模式的字符串何时初始化   java Selenium webdriver我无法将webdriver设置为Firefox I   java服务器发送事件(SSE)和Jetty(编程设置)   linux java。lang.NullPointerException和返回代码   OpenGL VBO多维数据集未正确渲染(Java、LWJGL)   java JavaFX如何将图形“裁剪”到按钮   java数据库插入未向表中添加数据   java在字符串数组中添加数字   在java中识别一串字符串中的编号系统/序列/模式