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 %}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM