Flask
Paginering
Zoeken…
Paginatieroute Voorbeeld met fles-sqlalchemie Paginate
In dit voorbeeld gebruiken we een parameter in de route om het paginanummer op te geven. We stellen een standaardwaarde van 1 in op de functieparameterpagina page=1
. We hebben een User
in de database en we zoeken ernaar, in aflopende volgorde, waarbij eerst de nieuwste gebruikers worden getoond. We gebruiken vervolgens de paginate
methode van het query
object in flask-sqlalchemy. We geven dit vervolgens door aan render_template
om te worden weergegeven.
@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
)
Paginering weergeven in Jinja
Hier gebruiken we het object dat we hebben doorgegeven aan render_template
om de pagina's, de huidige actieve pagina en ook een vorige en volgende knoppen weer te geven als u naar de vorige / volgende pagina kunt gaan.
<!-- 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow