Sterowanie stronami w ListView
Dodawanie w szablonach odsyłaczy do następnej i poprzedniej strony
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 = 10Zmienna 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. 🎉
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
- Klasa Paginator
- Sterowanie stronami w ListView
- Pisanie TestCase i asercji
- Klient testowy i fixtures