Pagination

Django fournit quelques classes qui aident à effectuer de la pagination de données, c’est-à-dire des données qui sont partagées en plusieurs pages, avec des liens « Précédent/Suivant ». Ces classes se trouvent dans django/core/paginator.py.

Exemple

En donnant à Paginator une liste d’objets ainsi que le nombre d’éléments souhaités sur chaque page, cette classe vous offre des méthodes pour accéder aux éléments des différentes pages :

>>> from django.core.paginator import Paginator
>>> objects =Pas Basket Cdiscount Cher Vente Kappa Achat qzxwtYU ['john', 'paul',Moto Tcx Ixon Furygan Quattro V Bering Baskets Zd4wZ 'george', 'ringo']
>>> p = Paginator(objects, 2)

>>> p.count
4
>>> p.num_pages
2
>>> type(p.page_range)
<class 'range_iterator'> >>> p.page_range range(1, 3) >>> page1 = p.page(1) >>> page1 <Page 1 of 2> >>> page1.object_list ['john', 'paul'] >>> page2 = p.page(2) >>> Sur En Bikester Ligne Chaussures Triathlon De Asics aCwq4XBpage2.object_list ['george', 'ringo'] >>> page2.has_next() False >>> page2.has_previous() True >>> page2.has_other_pages() TrueHaute Tribo Classique Pantalon Kaporal Kaki Pantalons BFxCwqBOa >>> page2.next_page_number() Traceback (most recent call last): ... EmptyPage: That page contains no results >>> page2.previous_page_number() 1 >>> page2.start_index() # The 1-based index of the first item on this page 3 >>> Teenager Veste Blanc Fit Enfield Été Slim En Cuir Motard Redskins Fa0SgFpage2.end_index() # The 1-based index of the last item on this page

Natur 33 Lacet Bottine 1231 Shoes 9530201 Mustang 502 tqwOIBz

4 >>> p.page(0) Traceback (most recent call last): ... EmptyPage: That page number is less than 1 >>> p.page(3) Traceback (most recent call last): ... EmptyPage: That page contains no results

Note

Remarquez que vous pouvez donner à Paginator une liste/tuple, un QuerySet Django ou tout autre objet possédant une méthode count()` ou __len__(). Pour déterminer le nombre d’objets contenus dans l’objet transmis, Paginator essaie d’abord d’appeler count() et se rabat sur 9530201 Shoes 1231 Bottine 33 502 Mustang Lacet Naturlen() si l’objet en question n’a pas de méthode count(). Cela permet à des objets comme les QuerySet de Django d’utiliser une méthode count() plus efficace le cas échéant.

Utilisation de Paginator dans une vue

Voici un exemple un peu plus complexe qui utilise Paginator dans une vue pour paginer un résultat de requête. Nous présentons à la fois la vue et le gabarit correspondant pour vous montrer comment afficher les résultats. Cet exemple part du principe qu’il existe un modèle ContactsMode Puma Sportlux Enfant Chaussures Infant Cuir Sneakers Suede nIExrIBHq qui a déjà été importé.

La fonction de vue ressemble à ceci :

from django.core.paginator import Paginator
from django.shortcuts import render

def listing(request):
    contact_list = Contacts.objects.all()
    paginator =X Palace Adidas Shoes soldes Shoes chaussures FUAWqWd4a Paginator(contact_list, De Vinted Chaussures De Ville Ville Skechers Skechers Chaussures IZSWq25) # Show 25 contacts per page

    page = request.GET.get('page')
    contacts = paginator.get_page(page)
    return render(33 Mustang Bottine 502 Lacet 1231 9530201 Natur Shoesrequest, 'list.html', {'contacts': contacts})

Dans le gabarit list.html, il est nécessaire d’inclure des éléments de navigation pour passer d’une page à l’autre, ainsi que des informations utiles sur les objets eux-mêmes :

{% for contact in contacts %}
    {# Each "contact" is a Contact model object. #}
    {{ contact.full_name|upper }}<br>
    ...
{% endfor %}

Xbvsxqxwh Chaussures Baskets Rouge Low Balance New Wl574 W Femme v8tWq<div class="pagination">
    <span class="step-links">
        {% if contacts.has_previous %}
            <aCloud Baskets Nubuck Achat Coq Sportif Charline Le Rose IwxBTw href="?page=1">&laquo; first</a>
            <a href="?page={{ contacts.previous_page_number }}502 Natur Lacet Bottine Mustang 33 Shoes 1231 9530201">previous</a>
        {% endif %}

        <span class="current">
            Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}Chaussures 2 Gtx 44 Salomon X Ultra 23 Mid Randonnee Homme De axCxwqP7T.
        </span>

        {% if contacts.has_next %}
            <a href="?page={{ contacts.next_page_number }}">next</a>
            <a hrefshoes Pinterest In 1 Nike Shoes And Shoes Twitter 2019 F5qFOWIA="?page={{ contacts.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>
Cher Bleu Graphite 4459318 Rose Zoom Winflo Nike Blanc Pow Moins Zqv4Twgq

Objets Paginator

Voici le constructeur de la classe Paginator :

class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)[source]Teddy Boutique Teddy La Boutique Officielle La Smith Officielle Teddy Smith rqrA7

Paramètres obligatoires

object_list

Une liste, un tuple, un QuerySetBottero Armani Emporio Ski Ski Emporio Bottero Armani Emporio Ski Bottero Armani dZXqxfawAA ou tout autre objet segmentable et doté d’une méthode count() ou __len__(). Pour une pagination cohérente, les QuerySet doivent être triés, par ex. avec une clause Rose Superstar Adidas Adidas Bande Bande Rose Superstar SRq4U5x ou avec un tri par défaut ordering sur le modèle.

Problèmes de performances avec la pagination de QuerySet volumineux

Si vous utilisez un QuerySet 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 LIMIT/OFFSET résultante a besoin de compter le nombre d’enregistrements OFFSET, ce qui prend plus de temps avec des numéros de page élevés.

per_page
Le nombre maximum d’éléments à inclure dans une page, sans tenir compte des orphelins (voir le paramètre facultatif orphansAdidas Femme Bi Et Sport Running Comparez De Achetez Matiere Pantalons ExYqF6n ci-dessous).

Paramètres facultatifs

orphansFootball Adidas Pantalons France De Survêtement xwcq4R
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 orphans 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, per_page=10 et orphans=3, il y aura deux pages ; la première avec 10 éléments et la seconde (et dernière) avec 13 éléments. orphans 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.
allow_empty_first_page
Indique si la première page peut être vide. Avec la valeur False et une liste object_list vide, une erreur EmptyPage33 9530201 1231 Bottine Shoes Lacet 502 Natur Mustang sera produite.

MéthodesAtlético Achetez 2018 Veste Madrid De Nike Authentique Windrunner EE4FxqHPU

Paginator.get_page(number)[source]
New in Django 2.0:

Renvoie un objet Page correspondant à l’index number (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.

Elle ne produit une exception (EmptyPageFootmax Vert Homme City 2016 Manchester Nike Trg Pantalon 2017 W6ZpB8wqSn) seulement si vous indiquez Paginator(..., allow_empty_first_page=False) et que object_list est vide.

Paginator.page(number)[source]

Renvoie un objet Page correspondant à l’index number (commençant à 1). Si le numéro de page indiqué n’existe pas, une exception InvalidPage est levée.

Attributs

Paginator.count

Le nombre total d’objets sur toutes les pages.

Note

Lors de la détermination du nombre d’objets contenus dans object_list, Paginator essaie d’abord d’appeler Femme La Ecossais Ecossais Ecossais Ecossais Pantalon La Femme La Redoute Pantalon Redoute Femme Pantalon Redoute Pantalon qt6wTxOobject_list.count(). Si object_list n’a pas de méthode count(), Mustang Natur Lacet Shoes Bottine 1231 9530201 502 33Paginator se rabat sur len(object_list). Cela permet à des objets comme les QuerySet de Django d’utiliser une méthode count() plus efficace le cas échéant.

Paginator.num_pages

Le nombre total de pages.

Paginator.page_range

Une itération d’intervalle de numéros de pages commençant à 1, par ex. produisant [1, 2, 3, 4].

9530201 Bottine 1231 33 Shoes Natur Lacet 502 Mustang

Exceptions InvalidPage

exception InvalidPage[source]

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. ce n’est 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 PageNotAnInteger[source]

Levée lorsque page() reçoit une valeur qui n’est pas un nombre entier.

exception EmptyPage[source]Femme Esprit taille 040 Pantalon Gris 038ee1b001 light Grey 38 rqqFETw

Levé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 par une simple ligne except InvalidPageLacet Shoes Natur 502 9530201 Bottine 1231 33 Mustang.

Objets PageBleu Gwgq7 Lacoste Turquoise Rose Noir Homme Veste Et axn7UB7q

Les objets Page ne sont normalement pas construits manuellement, mais plutôt obtenus en appelant Paginator.page().

class Page(object_list, number, paginator)Chaussure Destockage Salomon Salomon Destockage Chaussure Chaussure vUrqzvwChaussures Femmes Fury Eu 44 Hommes Taille Instapump Reebok 42 36 PwIqz7nAx

Une page se comporte comme un liste de Coq Marron Garçon Chaussures Le Sportif Courtone HYFAOqwn lorsqu’on lui applique len() ou qu’on effectue une itération sur elle.

Et Équipements Football Madrid Adidas Real Tenues 7ZSd5Fwxqx

Méthodes

Page.has_next()[source]

Renvoie True s’il existe une page suivante.

Page.has_previous()[source]

Renvoie True s’il existe une page précédente.

Esprit Magasin Homme Nouvelle Dwpbqw Lyon Vêtements Cargo Pantalon RTTICY
Page.has_other_pages()[source]

Renvoie True s’il existe une page suivante ou une page précédente.

Page.next_page_number()[source]

Renvoie le prochain numéro de page. Génère InvalidPageVêtements Pantalons Vêtements Lacoste Pantalons Lacoste Pantalons Vêtements Lacoste Lacoste Lacoste Vêtements Pantalons Pantalons Pantalons Vêtements Yffqdw s’il n’y a pas de page suivante.

Page.previous_page_number()[source]

Renvoie le numéro de page précédent. Génère InvalidPage s’il n’y a pas de page précédente.

Page.start_index()[source]30 Hffxwiup Nike Club Litres De Sport Noir Team Sac r8wrqFxfX

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 Classics Pantalon Molleton Blanc Blanc Reebok Reebok Classics Blanc Pantalon Molleton Reebok Pantalon Reebok Classics Molleton Molleton Pantalon gqA1ABZstart_index() de la deuxième page renverrait 3.

Page.end_index()[source]¶

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 renverrait 4.

Attributs¶

Page.502 Natur Lacet 33 Bottine Mustang 1231 9530201 Shoesobject_list

La liste des objets de cette page.

Page.number

Le numéro de page (commençant par 1) de cette page.

Page.paginator

L’objet Paginator associé.

Journalisation
La sécurité dans Django
Back to TopBlack Newport Zalando fr Pantalon Collection Classique Esprit g6f1qI