flask 分页数据显示

Posted zengxm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask 分页数据显示相关的知识,希望对你有一定的参考价值。

填充一些数据在表中

技术图片

@blue.route(/pages/)
def pages():
  # 默认进入这个视图函数 第一页并只显示5条数据   
    page = request.args.get(page,1,type=int)
    per_page = request.args.get(per_page,5,type=int)

    # 返回列表 如[1, 2, 3, 4]
    pagination = Pron.query.order_by(Pron.p_id.desc()).paginate(page,per_page)  # Pron.p_id.desc() 或者 -Pron.p_id 是倒序排列

    # 返回当前页的所有数据
    persons = pagination.items
  
return render_template(per.html,pagination=pagination,persons=persons)

 

# per.html

    % for person in persons %
        id: person.p_id <br>
        字段: person.p_str <br>
        随机号码: person.p_int <br><br>
    % endfor %

    <hr>
    <!--------------第一页--------------------->
    <a href=" url_for(‘base.pages‘) ">第一页</a>
    
  # 通过
has_prev 判断是否能上一页,不能则 url 为 #

    % if pagination.has_prev %
        <a href=" url_for(‘base.pages‘) ?page= pagination.prev_num ">上一页</a>
    % else %
        <a href="#">上一页</a>
    % endif %

    <!--------------页码列表--------------------->
    % for page in pagination.iter_pages() %
        % if page %
            <!--------------当列表中的页码不等于 当前的页数 生成其他页码数(url)--------------------->
            % if page != pagination.page %
                <a href=" url_for(‘base.pages‘) ?page= page "> page </a>
            % else %
                <a href="#"> page </a>
            % endif %
        % endif %
    % endfor %
  
  
  # 通过 has_next 判断是否能上一页,不能则 url 为 #
    % if pagination.has_next %
        <a href=" url_for(‘base.pages‘) ?page= pagination.next_num ">下一页</a>
    % else %
        <a href="#">上一页</a>
    % endif %

    <!--------------最后一页--------------------->
    <a href=" url_for(‘base.pages‘) ?page= pagination.pages ">最后一页</a>



    <hr>

        当前页面   pagination.page 
        总页数    pagination.pages 
        总数据    pagination.total 

显示

技术图片

 

 

 




其中一些方法的知识点

paginate.page 当前页数
paginate.pages 总页数
paginate.total 数据总条数
paginate.has_prev 是否存在上一页 是则返回trun
paginate.iter_pages() 所有页码    返回列表 如[1, 2, 3, 4]  可在html模板中迭代得到页码数
paginate(page, per_page,error_out).items  返回当前页的所有数据  在html中循环迭代得到其中数据 如下
% for person in paginate.items %
        id: person.p_id <br>
        字段: person.p_str <br>
        随机号码: person.p_int <br><br>
    % endfor %

 

 



简化视图函数和html模板

@blue.route(/pages/)
def pages():

    page = request.args.get(page,1,type=int)
    per_page = request.args.get(per_page,5,type=int)

    # 返回列表 如[1, 2, 3, 4]
    pagination = Pron.query.order_by(Pron.p_id.desc()).paginate(page,per_page)  # Pron.p_id.desc() 或者 -Pron.p_id 是倒序排列

    # 返回当前页的所有数据
    persons = pagination.items    # 不需要直接使用paginate在html模板中items循环
    # return render_template(‘per.html‘,pagination=pagination,persons=persons)
    
    # 简化 在html页面中paginate.items 可以for循环迭代的到实例汇总的数据
    return render_template(per.html, pagination=pagination)
% for person in pagination.items %
        id: person.p_id <br>
        字段: person.p_str <br>
        随机号码: person.p_int <br><br>
    % endfor %

 

以上是关于flask 分页数据显示的主要内容,如果未能解决你的问题,请参考以下文章

17flask分页

Flask:数据分页功能设计

flask怎样查询mysql并显示在页面上

Python中使用flask_sqlalchemy实现分页效果方法详解

flask实战-个人博客-编写博客前台

Flask-SQLAlchemy中的分页操作