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 %}">&laquo;
        </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="#">&hellip;</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 %}">&raquo;</a>
    </li>
</ul>
{% endmacro %}

总结:希望这个小技术对你有所帮助

经验分享 程序员 微信小程序 职场和发展