美文网首页
Flask分页的实现方法

Flask分页的实现方法

作者: Alex_Dj | 来源:发表于2018-04-07 23:14 被阅读0次

    所需环境

    Flask-SQLAlchemy

    分页

    使用Flask-SQLAlchemy提供的pagination()方法。页数是pagination()方法的第一个参数,也是唯一必须的参数。可选参数per_page用来指定每页显示的记录数。

    参考代码:

    def index():
        # ...
        page = request.args.get('page', 1, type=int)
        pagination = Post.query.order_by(Post.timestamp.desc()).paginate(
            page, per_page=current_app.config['FLASKY_POST_PER_PAGE'], error_out=False)
        post = pagination.items
        return render_template('index.html',form=form,posts=posts,pagination=pagination)
    

    添加导航栏

    pagination()方法的返回值是一个Pagination类对象,这个类在Flask-SQLAlchemy中定义。 这个对象包含很多属性,用于在模板中生成分页链接。

    Jinja2宏实现的分页导航:

    {% macro pagination_widget(pagination, endpoint) %}
    <ul class="pagination">
        <li{% if not pagination.has_prev %} class="disabled"{% endif %}>
            <a href="{% if pagination.has_prev %}{{ url_for(endpoint, page=pagination.prev_num, **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.next_num, **kwargs) }}{% else %}#{% endif %}">
                &raquo;
            </a>
        </li>
    </ul>
    {% endmacro %}
    

    相关文章

      网友评论

          本文标题:Flask分页的实现方法

          本文链接:https://www.haomeiwen.com/subject/uliyhftx.html