• 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 %}
  • 相关阅读:
    【开源】知乎日报UWP 更新
    【开源】知乎日报UWP 更新
    耿丹学院软工助教(2016年上半年)
    c++ STL map 结构体
    2016搜狐笔试二叉树和最大的子树
    从B树、B+树、B*树谈到R 树
    C++继承:公有,私有,保护
    循环队列
    C++中的static关键字
    c++map的用法
  • 原文地址:https://www.cnblogs.com/zengxm/p/11147465.html
Copyright © 2020-2023  润新知