flask-sqlalchemy 分页

Flask-sqlalchemy 自带分页功能,Flask-SQLAlchemy提供paginate()方法对数据库数据进行分页。

paginate 方法参数说明:

page: 表示返回第几页的数据,默认为1

per_page: 分页时每一页的数量,默认为20

error_out : 值为Fasle请求页数超出范围时返回空,True则报404错误,默认为True

max_per_page :分页时每一页最大的数量

paginate 方法返回一个Pagination对象。

Pagination 对象的属性说明:

has_next:如果还有下一页返回 True。

has_prev:如果还有上一页返回 True。

next_num:下一页的页面码

prev_num:前一页的页面码

pages: 返回总页数

page : 返回当前页码

items :以列表的形式返回请求页的所以数据对象

Pagination 对象的方法说明:

iter_pages():返回一个列表,包含所有页码。

prev():上一页的分页对象。

next():下一页的分页对象。

示例:

  # 对GoodsInfo表进行分页,返回第二页的数据,每一页两条数据,超出最大页码时返回空,每页最多3条数据
    a = GoodsInfo.query.paginate(2, 2, error_out=False, max_per_page=3)
    # 以列表的形式返回所有数据对象
    print(a.items)
    for i in a.items:
        print(i)

    # 总页数
    print(a.pages)
    # iter_pages 方法,返回一个包含所有页码的列表
    print([i for i in a.iter_pages()])

模板分页示例:


    {#上一页#}
    {% if p.has_prev %}
        <a href="{{ url_for('.goods_list') }}?sort_field=4&s_class={{ s_class }}&b_class={{ b_class }}&page={{ p.prev_num }}">&lt;</a>
    {% else %}
            <a href="{{ url_for('.goods_list') }}?sort_field=4&s_class={{ s_class }}&b_class={{ b_class }}&page=1">&lt;</a>
    {% endif %}

    {# 分页#}
    {% for page in p.iter_pages() %}
        {# 只显示3页 #}
        {% if (page - 1) <= p.page <= (page + 1) %}
            {# 判断当前页给标记css #}
            {% if page == p.page %}
                <a href="{{ url_for('.goods_list') }}?sort_field=4&s_class={{ s_class }}&b_class={{ b_class }}&page={{ page }}" class="sel" class="sel">{{ page }}</a>
            {% else %}
                <a href="{{ url_for('.goods_list') }}?sort_field=4&s_class={{ s_class }}&b_class={{ b_class }}&page={{ page }}" class="{{ sel }}" class="">{{ page }}</a>
            {% endif %}
        {% endif %}
    {% endfor %}

    {# 下一页#}
    {% if p.has_next %}
        <a href="{{ url_for('.goods_list') }}?sort_field=4&s_class={{ s_class }}&b_class={{ b_class }}&page={{ p.next_num }}">&gt;</a>
    {% else %}
            <a href="{{ url_for('.goods_list') }}?sort_field=4&s_class={{ s_class }}&b_class={{ b_class }}&page={{ p.pages }}">&gt;</a>
    {% endif %}
    页面

大类id,小类id,sort_field,page,pre_page,

Iyoyo电子书 一本集作者多年开发经验的python电子书 all right reserved,powered by Gitbook文件修订时间: 2022年 10:00:03