Ich habe eine Datentabelle in meiner Django App mit django_tables2 und haben hinzugefügt bootstrap pagination zu ihm aus offensichtlichen Gründen mit this answer. Ich kopierte die tables.html
-Datei in meine Vorlagen Verzeichnis und es wie folgt geändert:Django Paginierung Grenzen
{% if table.page %}
{% with table.page.paginator.count as total %}
{% with table.page.object_list|length as count %}
{% block pagination %}
<ul class="pagination">
{% block pagination.cardinality %}
<li class="cardinality">
{% if total != count %}{% blocktrans %}Showing {{ count }} of {{ total }}
{% endblocktrans %}{% else %}{{ total }}{% endif %}
{% if total == 1 %}{{ table.data.verbose_name }}{% else %}
{{ table.data.verbose_name_plural }}{% endif %}
</li>
{% endblock pagination.cardinality %}
</ul>
<div class="pull-right">
<nav>
<ul class="pagination">
{% block pagination.allpages %}
{% if table.page.has_previous %}
<li><a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">Previous</a></li>
{% endif %}
{% for p in table.paginator.page_range %}
<li><a href="{% querystring table.prefixed_page_field=p %}">{{ p }}</a></li>
{% endfor %}
{% if table.has_next %}
<li><a href="{% querystring table.prefixed_page_field=table.page.next_page_number %}">Next</a></li>
{% endif %}
{% endblock pagination.allpages %}
</ul>
</nav>
</div>
</div>
{% endblock pagination %}
{% endwith %}
{% endwith %}
{% endif %}
Ab sofort ist der Tisch hat sehr wenig Daten so habe ich nur zwei Seiten. Allerdings füllte ich die Tabelle mit zufälligen Daten und konnte 10 Seiten auf den Tisch bekommen. Allerdings ist dies nicht wünschenswert, denn was passiert, wenn ich 1000 Einträge mit 10 pro Seite habe, kann ich nicht den Seiten-Navigator 100 anzeigen lassen, da dies meinen Inhaltsbereich überfluten würde. Wie kann ich irgendwie die Anzahl der angezeigten Seiten begrenzen, d. H. Anstelle von 1 - 10 erscheinen im obigen Bild etwas wie
1|2|3|4|5|..
, wo ein Klick auf die ...
die Seiten 6|7|8|9|10|..
anzeigen würde. Ich habe versucht, previous
und next
Schaltflächen hinzufügen, aber nicht sicher, warum sie ausfallen.