Klasa Paginator
Dzielenie querysetu na strony
Klasa Paginator to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 1 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.
Dlaczego stosować stronicowanie
Wyświetlanie 5000 wierszy na jednej stronie jest powolne i przytłaczające. Stronicowanie dzieli długą listę na krótsze strony, które użytkownicy mogą wygodnie przeglądać. 📄
Poznaj Paginator
Django udostępnia klasę Paginator, która wykonuje obliczenia za Ciebie. Przekazujesz jej listę i rozmiar strony, a ona dzieli dane na strony.
from django.core.paginator import PaginatorUtwórz Paginator
Przekaż cały queryset oraz liczbę elementów na stronę. W tym przypadku każda strona zawiera 10 artykułów.
articles = Article.objects.all()
paginator = Paginator(articles, 10)Liczenie stron
Zapytaj paginator o liczbę stron za pomocą num_pages. Wynik jest zaokrąglany w górę, więc 25 elementów po 10 na stronę daje 3 strony.
paginator.num_pages # 3Pobierz jedną stronę
Wywołaj get_page() z numerem strony, aby pobrać pojedynczy fragment. Zwraca on obiekt Page zawierający tylko te elementy.
page = paginator.get_page(2)Iterowanie po stronie
Obiekt Page jest iterowalny, więc możesz iterować po nim tak jak po liście. Przetwarzasz tylko elementy z tej jednej strony, a nie wszystkie 5000.
for article in page:
print(article.title)get_page wybacza błędy
Jeśli ktoś poda stronę 999 lub słowo "abc", get_page() po cichu zwróci ostatnią lub pierwszą poprawną stronę zamiast powodować awarię.
Sprawdź, gdzie jesteś
Strona zna swoje położenie. Odczytaj number, aby uzyskać numer bieżącej strony — przyda się to do wyróżnienia jej w pasku nawigacji.
page.number # 2Następna i poprzednia
Użyj has_next() i has_previous(), aby zdecydować, czy w szablonie wyświetlić odnośnik do następnej lub poprzedniej strony.
page.has_next()
page.has_previous()Sąsiednie strony
Gdy wiesz już, że istnieje następna strona, next_page_number() zwraca numer, do którego należy utworzyć odnośnik. previous_page_number() działa analogicznie wstecz.
page.next_page_number() # 3Dodaj obsługę w widoku
W widoku odczytaj żądaną stronę z parametrów zapytania, a następnie przekaż page do kontekstu szablonu.
num = request.GET.get('page')
page = paginator.get_page(num)Szybkie sprawdzenie
Masz 23 elementy i rozmiar strony równy 10. Sprawdźmy obliczenia.
Podsumowanie
Poznał(a) Pan/Pani Paginator: przekazujesz mu queryset i rozmiar strony, pobierasz fragmenty za pomocą get_page() oraz odczytujesz num_pages, number i has_next(), aby zbudować nawigację. 🎉
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 „Klasa Paginator” jest bezpłatna?
Tak — pełny tekst „Klasa Paginator” 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 „Klasa Paginator”?
Dzielenie querysetu na 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 1 z 4.
Ile czasu zajmuje lekcja „Klasa Paginator”?
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.