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_by
est 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
page
dans 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
page
doit contenir un numéro de page valide ou la valeurlast
; toute autre valeur transmise àpage
produit 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 à
False
et 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 = Foo
revient au même que de définirqueryset = Foo.objects.all()
, oùobjects
correspond au gestionnaire par défaut deFoo
.
- queryset¶
Un objet
QuerySet
représentant les objets. Lorsqu’elle est renseignée, la valeur dequeryset
écrase la valeur fournie pourmodel
.Avertissement
queryset
est 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_by
objets 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 variablepage
ait é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_by
pour 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.Paginator
qui 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
ordering
par défaut.
- paginate_queryset(queryset, page_size)¶
Renvoie un tuple à 4 éléments contenant (
paginator
,page
,object_list
,is_paginated
).Construit en paginant
queryset
en 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_list
correspondra aux objets de cette page.
- get_paginate_by(queryset)¶
Renvoie le nombre d’éléments sur lequel baser la pagination, ou
None
pour éviter la pagination. Par défaut, cela renvoie 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_class
est 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_orphans
qui 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
False
et 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_list
est un jeu de requête d’objets Django et quecontext_object_name
n’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_name
est 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,False
est 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_list
peut ê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_name
de la vue (s’il est défini)<nom_app>/<nom_modèle><suffixe_gabarit>.html