Flask
Pagination
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