0Pricing
Django Academy · Leçon

Contrôles de page dans ListView

Ajoutez des liens suivant et précédent dans les modèles.

Contrôles de page dans ListView est une leçon Django Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Django Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Django Academy comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Pagination Built In

Good news: ListView can paginate for you. You barely write any code, and Django handles slicing the queryset into pages automatically. 🚀

Set paginate_by

Just add one attribute. Setting paginate_by tells the ListView how many items each page should show.

class ArticleList(ListView):
    model = Article
    paginate_by = 10

The page_obj Variable

With pagination on, your template receives a page_obj. It is the same Page object you met before, ready to loop and inspect.

Looping the Current Page

In the template, iterate page_obj to show only this page's items. Django already sliced the queryset for you.

{% for article in page_obj %}
  {{ article.title }}
{% endfor %}

Reading the Page Number

ListView pulls the page number from the ?page= query string in the URL, so a link to ?page=2 shows the second page.

Show a Previous Link

Guard the back link with has_previous so it only appears when there really is an earlier page to visit.

{% if page_obj.has_previous %}
  Prev
{% endif %}

Link to the Previous Page

Inside that block, build the href using previous_page_number so the link points one page back.

<a href="?page={{ page_obj.previous_page_number }}">Prev</a>

Show a Next Link

Mirror the logic for forward navigation. Wrap the next link in a has_next check so it hides on the final page.

{% if page_obj.has_next %}
  Next
{% endif %}

Display Page X of Y

Reassure users with a counter. Combine number and the paginator's num_pages to print "Page 2 of 5".

Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}

Custom Context Name

Prefer a friendlier loop variable? Set context_object_name and Django names the page list whatever you choose.

context_object_name = 'articles'

Putting It Together

One attribute plus a small template block gives you full page controls: prev, next, and a position counter, with no view logic to write.

Quick Check

Your ListView template needs the current page's items.

Recap

You enabled pagination with paginate_by, looped page_obj, and built prev/next links guarded by has_previous and has_next. Clean lists, zero view code. 🎉

Questions Fréquemment Posées

La leçon « Contrôles de page dans ListView » est-elle gratuite ?

Oui — le texte complet de « Contrôles de page dans ListView » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Django Academy, passe à CoddyKit PRO. Le cours Django Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Contrôles de page dans ListView » ?

Ajoutez des liens suivant et précédent dans les modèles. Tu pratiques Django Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Django Academy ?

Aucune expérience préalable n'est requise. Django Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Contrôles de page dans ListView » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Django Academy ?

Oui. Chaque leçon Django Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. La classe Paginator
  2. Contrôles de page dans ListView
  3. Écrire un TestCase et des assertions
  4. Le client de test et les fixtures
← Retour à Django Academy