Classes mixins pour objets multiples¶
MultipleObjectMixin¶
-
class
django.views.generic.list.MultipleObjectMixin¶ Une classe mixin pouvant être utilisée pour afficher une liste d’objets.
Si
paginate_byest indiqué, Django pagine les résultats renvoyés par la vue. Il est possible d’indiquer le numéro de page dans l’URL de deux manières différentes :En utilisant le paramètre
pagedans la configuration d’URL. Par exemple, voici à quoi pourrait ressembler la configuration d’URL :path('objects/page<int:page>/', PaginatedView.as_view()),
En passant le numéro de page comme paramètre dans la chaîne de requête de l’URL. Par exemple, une URL pourrait ressembler à ceci :
/objects/?page=3
Ces listes et valeurs sont indexées à partir de 1, et non 0, ce qui fait que la première page est représentée par la page
1.Pour plus de détails sur la pagination, lisez la documentation sur la pagination.
Comme cas particulier, il est aussi permis d’utiliser
last(dernier) comme valeur pour la variablepage:/objects/?page=last
Cela permet d’accéder à la dernière page des résultats sans devoir d’abord déterminer le nombre total de pages.
Notez que
pagedoit contenir un numéro de page valide ou la valeurlast; toute autre valeur transmise àpageproduit une erreur 404.Étend
Méthodes et attributs
-
allow_empty¶ Une valeur booléenne indiquant s’il faut afficher la page quand aucun objet n’est disponible. Si définie à
Falseet qu’aucun objet n’est disponible, la vue génère une erreur 404 au lieu d’afficher une page vide. La valeur par défaut estTrue.
-
model¶ Le modèle pour lequel cette vue va afficher des données. Indiquer
model = Foorevient au même que de définirqueryset = Foo.objects.all(), oùobjectscorrespond au gestionnaire par défaut deFoo.
-
queryset¶ Un objet
QuerySetreprésentant les objets. Lorsqu’elle est renseignée, la valeur dequerysetécrase la valeur fournie pourmodel.Avertissement
querysetest un attribut de classe avec une valeur modifiable, il faut donc être très prudent lorsqu’on l’utilise directement. Avant de l’utiliser, appelez sa méthodeall()ou obtenez-la avecget_queryset()qui se charge du clonage en arrière-plan.
-
ordering¶ Une chaîne ou une liste de chaînes indiquant l’ordre de tri à appliquer à
queryset. Les valeurs possibles sont les mêmes que pourorder_by().
-
paginate_by¶ Un nombre entier indiquant combien d’objets doivent être affichés par page. Lorsque cette valeur est présente, la vue pagine les objets avec
paginate_byobjets par page. La vue s’attend soit à ce que la chaîne de requête de l’URL contienne un paramètrepage(parrequest.GET) ou qu’une variablepageait été définie dans la configuration d’URL.
-
paginate_orphans¶ Un nombre entier indiquant le nombre d’objets surnuméraires que la dernière page peut contenir. Cette valeur s’ajoute au nombre
paginate_bypour la dernière page, afin d’éviter que la dernière page contienne un très petit nombre d’objets.
-
page_kwarg¶ Une chaîne indiquant le nom à utiliser pour le paramètre de page. La vue s’attend à la présence de ce paramètre soit comme paramètre de la chaîne de requête de l’URL (via
request.GET) ou comme variable nommée présente dans la configuration d’URL. La valeur par défaut estpage.
-
paginator_class¶ La classe de pagination à utiliser pour effectuer la pagination. Par défaut, c’est
django.core.paginator.Paginatorqui est utilisée. Si la classe de pagination personnalisée ne possède pas la même interface de constructeur quedjango.core.paginator.Paginator, vous devrez également fournir une implémentation pourget_paginator().
-
context_object_name¶ Désigne le nom de la variable à utiliser dans le contexte.
-
get_queryset()¶ Obtient la liste des éléments de la vue. Ce résultat doit être itérable et peut contenir un jeu de requête (pour lequel le comportement spécifique des jeux de requête est activé).
-
get_ordering()¶ Renvoie une chaîne (ou une liste de chaînes) définissant le tri qui sera appliqué à
queryset.Renvoie
orderingpar défaut.
-
paginate_queryset(queryset, page_size)¶ Renvoie un tuple à 4 éléments contenant (
paginator,page,object_list,is_paginated).Construit en paginant
queryseten pages de taillepage_size. Si la requête contient un paramètrepage, soit comme paramètre capturé dans l’URL ou sous forme de paramètre GET,object_listcorrespondra aux objets de cette page.
-
get_paginate_by(queryset)¶ Renvoie le nombre d’éléments sur lequel baser la pagination, ou
Nonepour éviter la pagination. Par défaut, cela renvoie simplement la valeur depaginate_by.
-
get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)¶ Renvoie une instance de la classe de pagination à utiliser pour cette vue. Par défaut, une instance de
paginator_classest renvoyée.
-
get_paginate_orphans()¶ Un nombre entier indiquant le nombre d’objets surnuméraires que la dernière page peut contenir. Par défaut, c’est la valeur de
paginate_orphansqui est renvoyée.
-
get_allow_empty()¶ Renvoie une valeur booléenne indiquant s’il faut afficher la page quand aucun objet n’est disponible. Si cette méthode renvoie
Falseet qu’aucun objet n’est disponible, la vue produit une erreur 404 au lieu d’afficher une page vide. La valeur par défaut estTrue.
-
get_context_object_name(object_list)¶ Renvoie le nom de la variable de contexte utilisée pour contenir la liste des données que cette vue manipule. Si
object_listest un jeu de requête d’objets Django et quecontext_object_namen’est pas défini, le nom du contexte correspondra au nom de modèle des objets contenus dans le jeu de requête, ajouté du suffixe'_list'. Par exemple, pour le modèleArticle, la variable de contexte sera nommée par défautarticle_list.
-
get_context_data(**kwargs)¶ Renvoie les données du contexte pour afficher la liste des objets.
Contexte
object_list: la liste des objets que cette vue va afficher. Sicontext_object_nameest renseigné, cette variable sera également définie dans le contexte, avec le même contenu queobject_list.is_paginated: une valeur booléenne indiquant si les résultats sont paginés. Plus particulièrement,Falseest renvoyé si aucune taille de page n’a été indiquée ou si les objets disponibles ne remplissent qu’une seule page.paginator: une instance dedjango.core.paginator.Paginator. Si les objets ne sont pas paginés, cette variable de contexte vautNone.page_obj: une instance dedjango.core.paginator.Page. Si les objets ne sont pas paginés, cette variable de contexte vautNone.
MultipleObjectTemplateResponseMixin¶
-
class
django.views.generic.list.MultipleObjectTemplateResponseMixin¶ Une classe mixin produisant une réponse basée sur un gabarit pour les vues opérant sur une liste d’instances d’objets. Exige que la vue dans laquelle elle est intégrée fournisse
self.object_list, la liste des instances d’objets sur lesquelles la vue opère.self.object_listpeut être un objetQuerySet, mais ce n’est pas obligatoire.Étend
Méthodes et attributs
-
template_name_suffix¶ Le suffixe à ajouter au nom de gabarit auto-généré. Le suffixe par défaut est
_list.
-
get_template_names()¶ Renvoie une liste de noms de gabarits potentiels. Cette liste contient :
- la valeur de
template_namede la vue (s’il est défini) <nom_app>/<nom_modèle><suffixe_gabarit>.html
- la valeur de
-