ich habe mit Paginator eine Bootstrap Pagination erstellt, die soweit auch gut funktioniert (vgl. Screenshot https://ibb.co/kxfb88T). Allerdings würde ich gerne die Anzahl der angezeigten Datensätze (z. B. 10, 25, 50, 100) durch ein Selector-Feld variabel einstellen (vgl. obigen Screenshot). Ich habe auch schon bei stackoverflow einen Lösungsansatz (https://stackoverflow.com/questions/172 ... er-1730267) gefunden, der wie folgt aussieht:
Code: Alles auswählen
# Assuming you're reading the Query String value ?p=
try:
per_page = int(request.REQUEST['p'])
except:
per_page = 25 # default value
paginator = Paginator(objects, per_page)
Könnt ihr mir hier vielleicht helfen wie genau ich meinen Code in der views.py bzw. index.html anpassen muss? Habt vielen Dank für eine Antwort.
Mein derzeitiger Code sieht wie folgt aus:
Code: Alles auswählen
views.py
...
def index(request):
webpages = Webpage.objects.order_by('-id')
paginator = Paginator(webpages, 5)
page = request.GET.get('page')
paged_webpages = paginator.get_page(page)
return render(request, 'first_app/index.html', {'webpages': paged_webpages})
Code: Alles auswählen
urls.py
...
urlpatterns = [
path('', views.index, name='index'),
]
Code: Alles auswählen
index.html:
...
<!-- Paginator -->
<div class="row">
<div class="col-md-12">
{% if webpages.has_other_pages %}
<ul class="pagination">
{% if webpages.has_previous %}
<li class="page-item">
<a href="?page={{ webpages.previous_page_number }}" class="page-link">«</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link">«</a>
</li>
{% endif %}
{% for i in webpages.paginator.page_range %}
{% if webpages.number == i %}
<li class="page-item active">
<a class="page-link">{{ i }}</a>
</li>
{% else %}
<li class="page-item">
<a href="?page={{ i }}" class="page-link">{{ i }}</a>
</li>
{% endif %}
{% endfor %}
{% if webpages.has_next %}
<li class="page-item">
<a href="?page={{ webpages.next_page_number }}" class="page-link">»</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link">»</a>
</li>
{% endif %}
</ul>
{% endif %}
</div>
</div>
<select class="custom-select" id="selector">
<option selected>Choose items per page</option>
<option value="1">10</option>
<option value="2">25</option>
<option value="3">50</option>
</select>