Django Academy · Lekcja

Klasa Paginator

Dzielenie querysetu na strony

Lekcja 1 z 413 kroki

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 Paginator

Utwó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  # 3

Pobierz 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  # 2

Nastę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()  # 3

Dodaj 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ę. 🎉

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 „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.

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