Recherche…


Exemple de route de pagination avec Pagin-sqlalchemy Paginate

Dans cet exemple, nous utilisons un paramètre dans l'itinéraire pour spécifier le numéro de page. Nous définissons une valeur par défaut de 1 dans la page=1 paramètres de la fonction page=1 . Nous avons un objet User dans la base de données et nous l'interrogons, en ordre décroissant, en indiquant d'abord les derniers utilisateurs. Nous utilisons ensuite la méthode paginate de l'objet de query dans flask-sqlalchemy. Nous passons ensuite ceci à render_template pour être rendu.

@app.route('/users')
@app.route('/users/page/<int:page>')
def all_users(page=1):
    try:
        users_list = User.query.order_by(
            User.id.desc()
        ).paginate(page, per_page=USERS_PER_PAGE)
    except OperationalError:
        flash("No users in the database.")
        users_list = None

    return render_template(
        'users.html',
        users_list=users_list,
        form=form
    )

Rendre la pagination à Jinja

Ici, nous utilisons l'objet que nous avons passé à render_template pour afficher les pages, la page active en cours, ainsi que les boutons précédent et suivant si vous pouvez aller à la page précédente / suivante.

<!-- previous page -->
{% if users_list.has_prev %}
<li>
    <a href="{{ url_for('users', page=users_list.prev_num) }}">Previous</a>
</li>
{% endif %}

<!-- all page numbers -->
{% for page_num in users_list.iter_pages() %}
    {% if page_num %}
        {% if page_num != users_list.page %}
            <li>
                <a href="{{ url_for('users', page=page_num) }}">{{ page_num }}</a>
            </li>
        {% else %}
            <li class="active">
                <a href="#">{{ page_num }}</a>
            </li>
        {% endif %}
   {% else %}
       <li>
           <span class="ellipsis" style="white-space; nowrap; overflow: hidden; text-overflow: ellipsis">…</span>
       </li>
   {% endif %}
{% endfor %}

<!-- next page -->
{% if users_list.has_next %}
<li>
    <a href="{{ url_for('users', page=users_list.next_num) }}">Next</a></li>
{% endif %}
{% endif %}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow