Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Usunięcie limitu paginacji stronnicowania na django


Rekomendowane odpowiedzi

Witam, chciałbym uzyskać taką paginacje. Chodzi o usunięcie limitu paginacji stronnicowania na django CMS

zamiast takiej 

image

chodzi mi o to, żeby po dziesiątce pojawiły się kropki a po nich ostatnia strona. Jak mogę to osiągnąć?

views.py

from django.shortcuts import render
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from .models import Bans

def bans_index(request):
    bans_list = Bans.objects.order_by('-created')
    paginator = Paginator(bans_list, 15)

    page = request.GET.get('page')
    bans = paginator.get_page(page)
    return render(request, 'sourcebans/bans_index.html', {'bans': bans})

bans_index.html (wycinek)

<div class="col-md-12">
                    <nav aria-label="Page navigation example">
                      <ul class="pagination">
                          {% if bans.has_previous %}
                            <li class="page-item">
                                  <a class="page-link" href="?page={{ bans.previous_page_number }}" aria-label="Previous">
                                    <span aria-hidden="true">&laquo;</span>
                                    <span class="sr-only">Previous</span>
                                  </a>
                            </li>
                          {% endif %}
                          {% for i in bans.paginator.page_range %}
                            {% if bans.number == i %}
                                <li class="page-item active"><span class="page-link">{{ i }} <span class="sr-only">(current)</span></span></li>
                            {% else %}
                                <li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
                            {% endif %}
                          {% endfor %}
                          {% if bans.has_next %}
                            <li class="page-item">
                              <a class="page-link" href="?page={{ bans.next_page_number }}" aria-label="Next">
                                <span aria-hidden="true">&raquo;</span>
                                <span class="sr-only">Next</span>
                              </a>
                            </li>
                          {% endif %}
                      </ul>
                    </nav>
                </div>
Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)

Na Django się nie znam, więc tu nie pomogę.

Jednak zasada paginacji zawsze jest ta sama. A podobny wygląd robiłem nawet niedawno i też w Twigu

To jest za duże:

bans.paginator.page_range

Tam powinno znajdować się tylko 10 stron począwszy od tej, na której jesteś.

Kolejnym krokiem jest warunek, jeśli ostatnia strona z zakresu jest mniejsza od ostatniej strony (ogólnie) minus 1, to wyświetl wielokropek.

Następny warunek, jeśli ostatnia strona z zakresu nie jest równa ostatniej stronie (ogólnie) , to wyświetl link do ostaniej strony.

No i na sam koniec wyświetl link 'dalej'. Najlepiej też z warunkiem - jeśli aktualna strona nie jest równa ostatniej stronie (ogólnie).

Edytowane przez El Profesor
Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...