zoukankan      html  css  js  c++  java
  • 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 %}
  • 相关阅读:
    学习tornado:介绍
    【Unity Shaders】Using Textures for Effects介绍
    高性能C++网络库libtnet实现:http
    理解WebKit和Chromium: 硬件加速之RenderLayer树到合成树
    【Unity Shaders】Diffuse Shading——使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)
    【Unity Shaders】Diffuse Shading——漫反射光照改善技巧
    ③ 设计模式的艺术-16.访问者(Visitor)模式艺术
    ② 设计模式的艺术-15.观察者(Observer)模式
    ① 设计模式的艺术-14.职责链(Chain of Responsibility)模式
    ⑦ 设计模式的艺术-13.代理(Proxy)模式
  • 原文地址:https://www.cnblogs.com/zengxm/p/11147465.html
Copyright © 2011-2022 走看看