{"title":"Pagination","version":"4.2","locale":"fr","docname":"ref/paginator","url":"/fr/4.2/ref/paginator/","canonical":"https://djangodocs.dev/fr/4.2/ref/paginator/","summary":"Django propose quelques classes pour aider à gérer des données paginées, c’est-à-dire des données divisées en plusieurs pages avec des liens «…","html":"<h1>Pagination<a class=\"heading-anchor\" href=\"#paginator\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django propose quelques classes pour aider à gérer des données paginées, c’est-à-dire des données divisées en plusieurs pages avec des liens « Précédent/Suivant ». Ces classes se trouvent dans <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/4.2.x/django/core/paginator.py\">django/core/paginator.py</a>.</p>\n<p>Pour des exemples, consultez le <a class=\"reference internal\" href=\"/fr/4.2/topics/pagination/\"><span class=\"doc\">guide thématique sur la pagination</span></a>.</p>\n<section id=\"paginator-class\">\n<span id=\"module-django.core.paginator\"></span><h2>Classe <code class=\"docutils literal notranslate\">Paginator</code><a class=\"heading-anchor\" href=\"#paginator-class\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Paginator</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">object_list</em>, <em class=\"sig-param\">per_page</em>, <em class=\"sig-param\">orphans<span class=\"o\">=</span><span class=\"default_value\">0</span></em>, <em class=\"sig-param\">allow_empty_first_page<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un paginateur se comporte comme une liste d’objets <a class=\"reference internal\" href=\"#django.core.paginator.Page\" title=\"django.core.paginator.Page\"><code class=\"xref py py-class docutils literal notranslate\">Page</code></a> lorsqu’on lui applique <code class=\"docutils literal notranslate\">len()</code> ou qu’on itère directement sur lui.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.object_list\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">object_list</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.object_list\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Obligatoire. Une liste, un tuple, un <code class=\"docutils literal notranslate\">QuerySet</code> ou tout autre objet segmentable et doté d’une méthode <code class=\"docutils literal notranslate\">count()</code> ou <code class=\"docutils literal notranslate\">__len__()</code>. Pour une pagination cohérente, les <code class=\"docutils literal notranslate\">QuerySet</code> doivent être triés, par ex. avec une clause <a class=\"reference internal\" href=\"/fr/4.2/ref/models/querysets/#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> ou avec un tri par défaut <a class=\"reference internal\" href=\"/fr/4.2/ref/models/options/#django.db.models.Options.ordering\" title=\"django.db.models.Options.ordering\"><code class=\"xref py py-attr docutils literal notranslate\">ordering</code></a> sur le modèle.</p>\n<aside class=\"admonition-performance-issues-paginating-large-queryset-s admonition\" role=\"note\">\n<p class=\"admonition-title\">Problèmes de performances avec la pagination de <code class=\"docutils literal notranslate\">QuerySet</code> volumineux</p>\n<p>Si vous utilisez un <code class=\"docutils literal notranslate\">QuerySet</code> avec un très grand nombre d’éléments, la récupération de numéros de page élevés peut être lent avec certaines bases de données, car la requête <code class=\"docutils literal notranslate\">LIMIT</code>/<code class=\"docutils literal notranslate\">OFFSET</code> résultante a besoin de compter le nombre d’enregistrements <code class=\"docutils literal notranslate\">OFFSET</code>, ce qui prend plus de temps avec des numéros de page élevés.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.per_page\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">per_page</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.per_page\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Obligatoire. Le nombre maximum d’éléments à inclure dans une page, sans tenir compte des orphelins (voir le paramètre facultatif <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.orphans\" title=\"django.core.paginator.Paginator.orphans\"><code class=\"xref py py-attr docutils literal notranslate\">orphans</code></a> ci-dessous).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.orphans\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">orphans</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.orphans\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Facultatif. Utilisez ce paramètre lorsque vous ne souhaitez pas de dernière page avec très peu d’éléments. Lorsque la dernière page ne contient que le nombre <code class=\"docutils literal notranslate\">orphans</code> d’éléments ou moins, ces éléments sont alors ajoutés à la page précédente (qui devient la dernière page) au lieu de les laisser seuls sur une page. Par exemple, avec 23 éléments, <code class=\"docutils literal notranslate\">per_page=10</code>  et <code class=\"docutils literal notranslate\">orphans=3</code>, il y aura deux pages ; la première avec 10 éléments et la seconde (et dernière) avec 13 éléments. <code class=\"docutils literal notranslate\">orphans</code> vaut zéro par défaut, ce qui signifie que les pages ne sont jamais jointes et que la dernière page peut ne posséder qu’un seul élément.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.allow_empty_first_page\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">allow_empty_first_page</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.allow_empty_first_page\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Facultatif. Indique si la première page peut être vide. Avec la valeur <code class=\"docutils literal notranslate\">False</code> et une liste <code class=\"docutils literal notranslate\">object_list</code> vide, une erreur <code class=\"docutils literal notranslate\">EmptyPage</code> sera produite.</p>\n</dd></dl>\n\n<section id=\"methods\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.get_page\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">get_page</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">number</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.get_page\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un objet <a class=\"reference internal\" href=\"#django.core.paginator.Page\" title=\"django.core.paginator.Page\"><code class=\"xref py py-class docutils literal notranslate\">Page</code></a> correspondant à l’index <code class=\"docutils literal notranslate\">number</code> (commençant à 1), en gérant également les numéros de page non valides ou hors limites.</p>\n<p>Si la page n’est pas un nombre, la première page est renvoyée. Si le numéro de page est négatif ou plus grand que le nombre de pages, c’est la dernière page qui est renvoyée.</p>\n<p>Ne produit une exception <a class=\"reference internal\" href=\"#django.core.paginator.EmptyPage\" title=\"django.core.paginator.EmptyPage\"><code class=\"xref py py-exc docutils literal notranslate\">EmptyPage</code></a> que si vous indiquez <code class=\"docutils literal notranslate\">Paginator(..., allow_empty_first_page=False)</code> et que <code class=\"docutils literal notranslate\">object_list</code> est vide.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.page\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">page</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">number</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.page\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un objet <a class=\"reference internal\" href=\"#django.core.paginator.Page\" title=\"django.core.paginator.Page\"><code class=\"xref py py-class docutils literal notranslate\">Page</code></a> correspondant à l’index <code class=\"docutils literal notranslate\">number</code> (commençant à 1). Si <code class=\"docutils literal notranslate\">number</code> ne peut pas être converti en nombre entier avec <code class=\"docutils literal notranslate\">int()</code>, une exception <a class=\"reference internal\" href=\"#django.core.paginator.PageNotAnInteger\" title=\"django.core.paginator.PageNotAnInteger\"><code class=\"xref py py-exc docutils literal notranslate\">PageNotAnInteger</code></a> est produite. Si le numéro de page indiqué n’existe pas, une exception <a class=\"reference internal\" href=\"#django.core.paginator.EmptyPage\" title=\"django.core.paginator.EmptyPage\"><code class=\"xref py py-exc docutils literal notranslate\">EmptyPage</code></a> est produite.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.get_elided_page_range\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">get_elided_page_range</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">number</em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\">*</abbr></span></em>, <em class=\"sig-param\">on_each_side<span class=\"o\">=</span><span class=\"default_value\">3</span></em>, <em class=\"sig-param\">on_ends<span class=\"o\">=</span><span class=\"default_value\">2</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.get_elided_page_range\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une liste (commençant à 1) de numéros de pages comme avec <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.page_range\" title=\"django.core.paginator.Paginator.page_range\"><code class=\"xref py py-attr docutils literal notranslate\">Paginator.page_range</code></a> mais peut appliquer une élision avant et après le numéro de page actuel lorsque <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.num_pages\" title=\"django.core.paginator.Paginator.num_pages\"><code class=\"xref py py-attr docutils literal notranslate\">Paginator.num_pages</code></a> est grand.</p>\n<p>Le nombre de pages à inclure de part et d’autre du numéro de page actuel est déterminé par l’argument <code class=\"docutils literal notranslate\">on_each_side</code> qui vaut 3 par défaut.</p>\n<p>Le nombre de pages à inclure au début et à la fin de l’intervalle de pages est déterminé par l’argument <code class=\"docutils literal notranslate\">on_ends</code> qui vaut 2 par défaut.</p>\n<p>Par exemple, avec les valeurs par défaut pour <code class=\"docutils literal notranslate\">on_each_side</code> et <code class=\"docutils literal notranslate\">on_ends</code>, si la page actuelle est 10 et qu’il y a 50 pages, l’intervalle de pages sera <code class=\"docutils literal notranslate\">[1, 2, '…', 7, 8, 9, 10, 11, 12, 13, '…', 49, 50]</code>. On trouve donc les pages 7, 8, 9 à la gauche et les pages 11, 12, 13 à la droite de la page actuelle, avec les pages 1, 2 au début et 49, 50 à la fin.</p>\n<p>Génère <a class=\"reference internal\" href=\"#django.core.paginator.InvalidPage\" title=\"django.core.paginator.InvalidPage\"><code class=\"xref py py-exc docutils literal notranslate\">InvalidPage</code></a> si le numéro de page indiqué n’existe pas.</p>\n</dd></dl>\n\n</section>\n<section id=\"attributes\">\n<h3>Attributs<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.ELLIPSIS\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">ELLIPSIS</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.ELLIPSIS\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne traduisible utilisée comme substituant pour l’élision des numéros de pages dans l’intervalle de pages renvoyé par <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.get_elided_page_range\" title=\"django.core.paginator.Paginator.get_elided_page_range\"><code class=\"xref py py-meth docutils literal notranslate\">get_elided_page_range()</code></a>. La valeur par défaut est <code class=\"docutils literal notranslate\">'…'</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.count\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">count</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.count\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nombre total d’objets sur toutes les pages.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Lors de la détermination du nombre d’objets contenus dans <code class=\"docutils literal notranslate\">object_list</code>, <code class=\"docutils literal notranslate\">Paginator</code> essaie d’abord d’appeler <code class=\"docutils literal notranslate\">object_list.count()</code>. Si <code class=\"docutils literal notranslate\">object_list</code> n’a pas de méthode <code class=\"docutils literal notranslate\">count()</code>, <code class=\"docutils literal notranslate\">Paginator</code> se rabat sur <code class=\"docutils literal notranslate\">len(object_list)</code>. Cela permet à des objets comme les <code class=\"docutils literal notranslate\">QuerySet</code> d’utiliser une méthode <code class=\"docutils literal notranslate\">count()</code> plus efficace le cas échéant.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.num_pages\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">num_pages</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.num_pages\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nombre total de pages.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Paginator.page_range\">\n<span class=\"sig-prename descclassname\">Paginator.</span><span class=\"sig-name descname\">page_range</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Paginator.page_range\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une itération d’intervalle de numéros de pages commençant à 1, par ex. produisant <code class=\"docutils literal notranslate\">[1, 2, 3, 4]</code>.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"page-class\">\n<h2>Classe <code class=\"docutils literal notranslate\">Page</code><a class=\"heading-anchor\" href=\"#page-class\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Les objets <code class=\"docutils literal notranslate\">Page</code> ne sont normalement pas construits manuellement, mais plutôt obtenus en itérant sur <a class=\"reference internal\" href=\"#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">Paginator</code></a> ou en appelant <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.page\" title=\"django.core.paginator.Paginator.page\"><code class=\"xref py py-meth docutils literal notranslate\">Paginator.page()</code></a>.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Page</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">object_list</em>, <em class=\"sig-param\">number</em>, <em class=\"sig-param\">paginator</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une page se comporte comme un liste de <a class=\"reference internal\" href=\"#django.core.paginator.Page.object_list\" title=\"django.core.paginator.Page.object_list\"><code class=\"xref py py-attr docutils literal notranslate\">Page.object_list</code></a> lorsqu’on lui applique <code class=\"docutils literal notranslate\">len()</code> ou qu’on effectue une itération sur elle.</p>\n</dd></dl>\n\n<section id=\"id1\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.has_next\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">has_next</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.has_next\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\">True</code> s’il existe une page suivante.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.has_previous\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">has_previous</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.has_previous\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\">True</code> s’il existe une page précédente.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.has_other_pages\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">has_other_pages</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.has_other_pages\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\">True</code> s’il existe une page suivante <strong>ou</strong> une page précédente.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.next_page_number\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">next_page_number</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.next_page_number\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le prochain numéro de page. Génère <a class=\"reference internal\" href=\"#django.core.paginator.InvalidPage\" title=\"django.core.paginator.InvalidPage\"><code class=\"xref py py-exc docutils literal notranslate\">InvalidPage</code></a> s’il n’y a pas de page suivante.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.previous_page_number\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">previous_page_number</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.previous_page_number\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le numéro de page précédent. Génère <a class=\"reference internal\" href=\"#django.core.paginator.InvalidPage\" title=\"django.core.paginator.InvalidPage\"><code class=\"xref py py-exc docutils literal notranslate\">InvalidPage</code></a> s’il n’y a pas de page précédente.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.start_index\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">start_index</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.start_index\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie l’index (commençant par 1) du premier objet de la page, relatif à tous les autres objets de la liste du paginateur. Par exemple, lors de la pagination d’une liste de 5 objets par groupes de 2, la méthode <a class=\"reference internal\" href=\"#django.core.paginator.Page.start_index\" title=\"django.core.paginator.Page.start_index\"><code class=\"xref py py-meth docutils literal notranslate\">start_index()</code></a> de la deuxième page renverrait <code class=\"docutils literal notranslate\">3</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.end_index\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">end_index</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.end_index\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie l’index (commençant par 1) du dernier objet de la page, relatif à tous les autres objets de la liste du paginateur. Par exemple, lors de la pagination d’une liste de 5 objets par groupes de 2, la méthode <a class=\"reference internal\" href=\"#django.core.paginator.Page.end_index\" title=\"django.core.paginator.Page.end_index\"><code class=\"xref py py-meth docutils literal notranslate\">end_index()</code></a> de la deuxième page renverrait <code class=\"docutils literal notranslate\">4</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"id2\">\n<h3>Attributs<a class=\"heading-anchor\" href=\"#id2\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.object_list\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">object_list</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.object_list\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La liste des objets de cette page.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.number\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">number</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.number\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le numéro de page (commençant par 1) de cette page.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.Page.paginator\">\n<span class=\"sig-prename descclassname\">Page.</span><span class=\"sig-name descname\">paginator</span><a class=\"heading-anchor\" href=\"#django.core.paginator.Page.paginator\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’objet <a class=\"reference internal\" href=\"#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">Paginator</code></a> associé.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"exceptions\">\n<h2>Exceptions<a class=\"heading-anchor\" href=\"#exceptions\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py exception\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.InvalidPage\">\n<em class=\"property\"><span class=\"k\">exception</span> </em><span class=\"sig-name descname\">InvalidPage</span><a class=\"heading-anchor\" href=\"#django.core.paginator.InvalidPage\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une classe de base pour les exceptions levées lorsqu’un paginateur reçoit un numéro de page non valable.</p>\n</dd></dl>\n\n<p>La méthode <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.page\" title=\"django.core.paginator.Paginator.page\"><code class=\"xref py py-meth docutils literal notranslate\">Paginator.page()</code></a> lève une exception quand la page demandée n’est pas valable (par ex. pas un nombre entier) ou quand elle ne contient aucun objet. Il est généralement suffisant d’intercepter l’exception <code class=\"docutils literal notranslate\">InvalidPage</code>, mais si vous souhaitez plus de finesse, vous pouvez intercepter l’une des exceptions suivantes :</p>\n<dl class=\"py exception\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.PageNotAnInteger\">\n<em class=\"property\"><span class=\"k\">exception</span> </em><span class=\"sig-name descname\">PageNotAnInteger</span><a class=\"heading-anchor\" href=\"#django.core.paginator.PageNotAnInteger\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Générée lorsque <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.page\" title=\"django.core.paginator.Paginator.page\"><code class=\"xref py py-meth docutils literal notranslate\">page()</code></a> reçoit une valeur qui n’est pas un nombre entier.</p>\n</dd></dl>\n\n<dl class=\"py exception\">\n<dt class=\"sig sig-object py\" id=\"django.core.paginator.EmptyPage\">\n<em class=\"property\"><span class=\"k\">exception</span> </em><span class=\"sig-name descname\">EmptyPage</span><a class=\"heading-anchor\" href=\"#django.core.paginator.EmptyPage\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Générée lorsque <a class=\"reference internal\" href=\"#django.core.paginator.Paginator.page\" title=\"django.core.paginator.Paginator.page\"><code class=\"xref py py-meth docutils literal notranslate\">page()</code></a> reçoit une valeur valable, mais que la page en question ne contient pas d’objet.</p>\n</dd></dl>\n\n<p>Ces deux exceptions sont des sous-classes de <a class=\"reference internal\" href=\"#django.core.paginator.InvalidPage\" title=\"django.core.paginator.InvalidPage\"><code class=\"xref py py-exc docutils literal notranslate\">InvalidPage</code></a>, il est donc possible de les intercepter toutes deux par une ligne <code class=\"docutils literal notranslate\">except InvalidPage</code>.</p>\n</section>","rootId":"paginator","toc":[{"title":"Classe Paginator","anchor":"paginator-class","children":[{"title":"Méthodes","anchor":"methods","children":[]},{"title":"Attributs","anchor":"attributes","children":[]}]},{"title":"Classe Page","anchor":"page-class","children":[{"title":"Méthodes","anchor":"id1","children":[]},{"title":"Attributs","anchor":"id2","children":[]}]},{"title":"Exceptions","anchor":"exceptions","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/4.2/ref/"}],"prev":{"docname":"ref/models/database-functions","title":"Fonctions de base de données","url":"/fr/4.2/ref/models/database-functions/"},"next":{"docname":"ref/request-response","title":"Les objets requête et réponse","url":"/fr/4.2/ref/request-response/"},"formats":{"html":"/fr/4.2/ref/paginator/","markdown":"/fr/4.2/ref/paginator.md","json":"/fr/4.2/ref/paginator.json"},"source":"https://github.com/django/django/blob/stable/4.2.x/docs/ref/paginator.txt","official":"https://docs.djangoproject.com/fr/4.2/ref/paginator/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}