0Pricing
Django Academy · Aula

A classe Paginator

Divida um conjunto de consultas em páginas

A classe Paginator é uma aula grátis de Django Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Django Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Django Academy inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

Why Paginate?

Showing 5,000 rows on one page is slow and overwhelming. Pagination splits a long list into bite-sized pages your users can browse. 📄

Meet the Paginator

Django ships a Paginator class that does the math for you. You hand it a list and a page size, and it carves the data into pages.

from django.core.paginator import Paginator

Create a Paginator

Pass your full queryset and how many items per page. Here every page holds 10 articles.

articles = Article.objects.all()
paginator = Paginator(articles, 10)

Counting the Pages

Ask the paginator how many pages exist with num_pages. It rounds up, so 25 items at 10 per page gives 3 pages.

paginator.num_pages  # 3

Grab One Page

Call get_page() with a page number to fetch a single slice. It returns a Page object holding just those items.

page = paginator.get_page(2)

Looping Over a Page

A Page is iterable, so you loop it like a list. You only ever touch the items on that one page, never all 5,000.

for article in page:
    print(article.title)

get_page Is Forgiving

If someone passes page 999 or the word "abc", get_page() quietly returns the last or first valid page instead of crashing.

Knowing Where You Are

The page knows its own spot. Read number for the current page, handy for highlighting it in your navigation bar.

page.number  # 2

Next and Previous

Use has_next() and has_previous() to decide whether to show the next or back link in your template.

page.has_next()
page.has_previous()

The Neighboring Pages

Once you know there is a next page, next_page_number() gives you the number to link to. previous_page_number() does the same backward.

page.next_page_number()  # 3

Wiring It Into a View

In a view, read the requested page from the query string, then pass the page to your template context.

num = request.GET.get('page')
page = paginator.get_page(num)

Quick Check

You have 23 items and a page size of 10. Let's test the math.

Recap

You met the Paginator: feed it a queryset and a page size, fetch slices with get_page(), and read num_pages, number, and has_next() to build navigation. 🎉

Perguntas Frequentes

A aula “A classe Paginator” é grátis?

Sim — o texto completo de “A classe Paginator” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Django Academy, atualize para CoddyKit PRO. O curso de Django Academy inclui 4 aulas no total.

O que vou aprender em “A classe Paginator”?

Divida um conjunto de consultas em páginas Você pratica Django Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Django Academy?

Nenhuma experiência prévia é necessária. Django Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “A classe Paginator”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Django Academy?

Sim. Cada aula de Django Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. A classe Paginator
  2. Controles de página no ListView
  3. Escrevendo TestCase e asserções
  4. O cliente de testes e fixtures
← Voltar para Django Academy