Django Academy · Lekcja

Sterowanie stronami w ListView

Dodawanie w szablonach odsyłaczy do następnej i poprzedniej strony

Lekcja 2 z 413 kroki

Sterowanie stronami w ListView to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.

Wbudowane stronicowanie

Dobra wiadomość: ListView może samodzielnie obsługiwać stronicowanie. Piszesz minimalną ilość kodu, a Django automatycznie dzieli queryset na strony. 🚀

Ustaw paginate_by

Wystarczy dodać jeden atrybut. Ustawienie paginate_by informuje ListView, ile elementów ma wyświetlać każda strona.

class ArticleList(ListView):
    model = Article
    paginate_by = 10

Zmienna page_obj

Po włączeniu paginacji szablon otrzymuje obiekt page_obj. To ten sam obiekt Page, który poznali Państwo wcześniej — gotowy do iterowania i sprawdzania.

Iterowanie po bieżącej stronie

W szablonie należy iterować po page_obj, aby wyświetlić tylko elementy z bieżącej strony. Django już wcześniej podzieliło dla Państwa queryset.

{% for article in page_obj %}
  {{ article.title }}
{% endfor %}

Odczytywanie numeru strony

ListView pobiera numer strony z ciągu zapytania ?page= w adresie URL, więc odnośnik do ?page=2 wyświetla drugą stronę.

Wyświetlanie odnośnika do poprzedniej strony

Należy uzależnić odnośnik powrotu od has_previous, aby pojawiał się tylko wtedy, gdy rzeczywiście istnieje wcześniejsza strona.

{% if page_obj.has_previous %}
  Prev
{% endif %}

Odnośnik do poprzedniej strony

W tym bloku należy zbudować href za pomocą previous_page_number, aby odnośnik prowadził o jedną stronę wstecz.

<a href="?page={{ page_obj.previous_page_number }}">Prev</a>

Wyświetlanie odnośnika do następnej strony

Należy zastosować analogiczną logikę do nawigacji do przodu. Odnośnik do następnej strony należy umieścić w warunku has_next, aby był ukryty na ostatniej stronie.

{% if page_obj.has_next %}
  Next
{% endif %}

Wyświetlanie strony X z Y

Warto uspokoić użytkowników za pomocą licznika. Należy połączyć number z num_pages paginatora, aby wyświetlić „Page 2 of 5”.

Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}

Niestandardowa nazwa kontekstu

Wolą Państwo używać przyjaźniejszej nazwy zmiennej w pętli? Należy ustawić context_object_name, a Django nazwie listę stron zgodnie z Państwa wyborem.

context_object_name = 'articles'

Połączenie wszystkich elementów

Jeden atrybut i niewielki blok szablonu zapewniają pełne page controls: odnośniki do poprzedniej i następnej strony oraz licznik pozycji — bez konieczności pisania logiki widoku.

Szybkie sprawdzenie

Szablon ListView potrzebuje elementów z bieżącej strony.

Podsumowanie

Włączyli Państwo paginację za pomocą paginate_by, iterowali po page_obj i utworzyli odnośniki prev/next chronione przez has_previous oraz has_next. Przejrzyste listy, zero kodu w widoku. 🎉

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Sterowanie stronami w ListView” jest bezpłatna?

Tak — pełny tekst „Sterowanie stronami w ListView” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Sterowanie stronami w ListView”?

Dodawanie w szablonach odsyłaczy do następnej i poprzedniej strony Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Django Academy?

Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Sterowanie stronami w ListView”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?

Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Klasa Paginator
  2. Sterowanie stronami w ListView
  3. Pisanie TestCase i asercji
  4. Klient testowy i fixtures
← Powrót do Django Academy