填充一些數據在表中
@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 %}