PaginationLien vers cette rubrique
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 django/core/paginator.py.
Classe PaginatorLien vers cette rubrique
- class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)Lien vers cette définition
- Paginator.object_listLien vers cette définition
Obligatoire. Une liste, un tuple, un
QuerySetou tout autre objet segmentable et doté d’une méthodecount()ou__len__(). Pour une pagination cohérente, lesQuerySetdoivent être triés, par ex. avec une clauseorder_by()ou avec un tri par défautorderingsur le modèle.
- Paginator.per_pageLien vers cette définition
Obligatoire. Le nombre maximum d’éléments à inclure dans une page, sans tenir compte des orphelins (voir le paramètre facultatif
orphansci-dessous).
- Paginator.orphansLien vers cette définition
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
orphansd’é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,per_page=10etorphans=3, il y aura deux pages ; la première avec 10 éléments et la seconde (et dernière) avec 13 éléments.orphansvaut 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.
- Paginator.allow_empty_first_pageLien vers cette définition
Facultatif. Indique si la première page peut être vide. Avec la valeur
Falseet une listeobject_listvide, une erreurEmptyPagesera produite.
MéthodesLien vers cette rubrique
- Paginator.get_page(number)Lien vers cette définition
Renvoie un objet
Pagecorrespondant à l’indexnumber(commençant à 1), en gérant également les numéros de page non valides ou hors limites.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.
Ne produit une exception
EmptyPageque si vous indiquezPaginator(..., allow_empty_first_page=False)et queobject_listest vide.
- Paginator.page(number)Lien vers cette définition
Renvoie un objet
Pagecorrespondant à l’indexnumber(commençant à 1). Si le numéro de page indiqué n’existe pas, une exceptionInvalidPageest levée.
AttributsLien vers cette rubrique
- Paginator.countLien vers cette définition
Le nombre total d’objets sur toutes les pages.
- Paginator.num_pagesLien vers cette définition
Le nombre total de pages.
- Paginator.page_rangeLien vers cette définition
Une itération d’intervalle de numéros de pages commençant à 1, par ex. produisant
[1, 2, 3, 4].
Classe PageLien vers cette rubrique
Les objets Page ne sont normalement pas construits manuellement, mais plutôt obtenus en appelant Paginator.page().
- class Page(object_list, number, paginator)Lien vers cette définition
Une page se comporte comme un liste de
Page.object_listlorsqu’on lui appliquelen()ou qu’on effectue une itération sur elle.
MéthodesLien vers cette rubrique
- Page.has_next()Lien vers cette définition
Renvoie
Trues’il existe une page suivante.
- Page.has_previous()Lien vers cette définition
Renvoie
Trues’il existe une page précédente.
- Page.has_other_pages()Lien vers cette définition
Renvoie
Trues’il existe une page suivante ou une page précédente.
- Page.next_page_number()Lien vers cette définition
Renvoie le prochain numéro de page. Génère
InvalidPages’il n’y a pas de page suivante.
- Page.previous_page_number()Lien vers cette définition
Renvoie le numéro de page précédent. Génère
InvalidPages’il n’y a pas de page précédente.
- Page.start_index()Lien vers cette définition
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
start_index()de la deuxième page renverrait3.
- Page.end_index()Lien vers cette définition
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
end_index()de la deuxième page renverrait4.
AttributsLien vers cette rubrique
- Page.object_listLien vers cette définition
La liste des objets de cette page.
- Page.numberLien vers cette définition
Le numéro de page (commençant par 1) de cette page.
- Page.paginatorLien vers cette définition
L’objet
Paginatorassocié.
ExceptionsLien vers cette rubrique
- exception InvalidPageLien vers cette définition
Une classe de base pour les exceptions levées lorsqu’un paginateur reçoit un numéro de page non valable.
La méthode Paginator.page() 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 InvalidPage, mais si vous souhaitez plus de finesse, vous pouvez intercepter l’une des exceptions suivantes :
- exception PageNotAnIntegerLien vers cette définition
Générée lorsque
page()reçoit une valeur qui n’est pas un nombre entier.
- exception EmptyPageLien vers cette définition
Générée lorsque
page()reçoit une valeur valable, mais que la page en question ne contient pas d’objet.
Ces deux exceptions sont des sous-classes de InvalidPage, il est donc possible de les intercepter toutes deux par une ligne except InvalidPage.