Python+Flask(2)--通过flask paginate解决列表分页问题
先看最终实现效果:
实现主要步骤及重要代码如下:
1.列表需要用到的数据源及内容自己随便建立,我这边用新闻资讯数据测试
2.模型文件models.py内容
3.蓝图部分view.py
@bp.route("/article_list", methods=[GET,POST])
def article_list():
if request.method==GET:
rows=db.session.query(Articles).filter(Articles.is_delete==0).all()
#获取总的记录
# total1=db.session.execute(select count(*) from jq_article where status=0).first()
total=db.session.query(func.count(Articles.aid)).filter(Articles.is_delete==0).scalar()
#新增分页
per_page = 4 # 每一页显示条数
page = request.args.get(page)
if not page:
page = 1
else:
page = int(page)
paginate = Articles.query.filter(Articles.is_delete == 0).order_by(Articles.aid.desc()).paginate(page, per_page, False)
news1 = paginate.items
return render_template(admin/articles/index.html,title=新闻资讯,paginate=paginate)
4.页面部分articlesindex.html
以上代码最重要的是分页部分:包括分页的引入和应用:
5.最后建立分页的宏文件templates\_macros.html
{% macro pagination_widget(pagination, endpoint) %}
<!--Ewangda 通过采用flask_paginate对amazeUI实现的分页部分-->
<ul class="am-pagination">
<li{% if not pagination.has_prev %} class="disabled"{% endif %}>
<a href="{% if pagination.has_prev %}{
{ url_for(endpoint,page = pagination.page - 1, **kwargs) }}
{% else %}#{% endif %}">«
</a>
</li>
{% for p in pagination.iter_pages() %}
{% if p %}
{% if p == pagination.page %}
<li class="active">
<a href="{
{ url_for(endpoint, page = p, **kwargs) }}">{
{ p }}</a>
</li>
{% else %}
<li>
<a href="{
{ url_for(endpoint, page = p, **kwargs) }}">{
{ p }}</a>
</li>
{% endif %}
{% else %}
<li class="disabled">
<a href="#">…</a>
</li>
{% endif %}
{% endfor %}
<li{% if not pagination.has_next %} class="disabled"{% endif %}>
<a href="{% if pagination.has_next %}{
{ url_for(endpoint,page = pagination.page + 1, **kwargs) }}{% else %}#{% endif %}">»</a>
</li>
</ul>
{% endmacro %}
总结:希望这个小技术对你有所帮助
