La clase Paginator
Divida un queryset en páginas
La clase Paginator es una lección gratuita de Django Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Django Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Django Academy incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en 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 PaginatorCreate 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 # 3Grab 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 # 2Next 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() # 3Wiring 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. 🎉
Preguntas frecuentes
¿La lección «La clase Paginator» es gratis?
Sí — el texto completo de «La clase Paginator» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Django Academy, actualiza a CoddyKit PRO. El curso de Django Academy incluye 4 lecciones en total.
¿Qué aprenderé en «La clase Paginator»?
Divida un queryset en páginas Practicas Django Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Django Academy?
No se requiere experiencia previa. Django Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «La clase Paginator»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Django Academy?
Sí. Cada lección de Django Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- La clase Paginator
- Controles de paginación en ListView
- Escritura de TestCase y aserciones
- El cliente de pruebas y los fixtures