---
title: "Mixins basées sur les dates"
version: 2.1
locale: fr
source: https://docs.djangoproject.com/fr/2.1/ref/class-based-views/mixins-date-based/
canonical: https://djangodocs.dev/fr/2.1/ref/class-based-views/mixins-date-based/
---
# Mixins basées sur les dates

> **Note**
>
> Tous les attributs de mise en forme de dates dans ces classes mixins utilisent les caractères de format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime). N’essayez pas d’utiliser les caractères de format de la balise de gabarit [`now`](/fr/2.1/ref/templates/builtins/#std-templatetag-now) car ils ne sont pas compatibles.

## `YearMixin`

#### `class YearMixin`

Une classe mixin pouvant être utilisée pour extraire et fournir des informations d’analyse pour le composant année d’une date.

**Méthodes et attributs**

#### `year_format`

Le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction de l’année. Par défaut, il s’agit de `'%Y'`.

#### `year`

**Facultatif** La valeur de l’année, sous forme de chaîne. Vaut `None` par défaut, ce qui signifie que l’année sera déterminée par d’autres moyens.

#### `get_year_format()`

Renvoie le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction de l’année. Renvoie [`year_format`](#django.views.generic.dates.YearMixin.year_format) par défaut.

#### `get_year()`

Renvoie l’année pour laquelle cette vue va afficher les données, sous forme de chaîne. Essaie les sources suivantes dans l’ordre :

- La valeur de l’attribut [`YearMixin.year`](#django.views.generic.dates.YearMixin.year).
- La valeur du paramètre `year` capturé dans le motif d’URL.
- La valeur du paramètre de requête `GET` `year`.

Génère une erreur 404 si aucune année valide ne peut être trouvée.

#### `get_next_year(date)`

Renvoie un objet date contenant le premier jour de l’année suivant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

#### `get_previous_year(date)`

Renvoie un objet date contenant le premier jour de l’année précédant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

## `MonthMixin`

#### `class MonthMixin`

Une classe mixin pouvant être utilisée pour extraire et fournir des informations d’analyse pour le composant mois d’une date.

**Méthodes et attributs**

#### `month_format`

Le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction du mois. Par défaut, il s’agit de `'%b'`.

#### `month`

**Facultatif** La valeur du mois, sous forme de chaîne. Vaut `None` par défaut, ce qui signifie que le mois sera déterminé par d’autres moyens.

#### `get_month_format()`

Renvoie le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction du mois. Renvoie [`month_format`](#django.views.generic.dates.MonthMixin.month_format) par défaut.

#### `get_month()`

Renvoie le mois pour lequel cette vue va afficher les données, sous forme de chaîne. Essaie les sources suivantes dans l’ordre :

- La valeur de l’attribut [`MonthMixin.month`](#django.views.generic.dates.MonthMixin.month).
- La valeur du paramètre `month` capturé dans le motif d’URL.
- La valeur du paramètre de requête `GET` `month`.

Génère une erreur 404 si aucune spécification valide du mois ne peut être trouvée.

#### `get_next_month(date)`

Renvoie un objet date contenant le premier jour du mois suivant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

#### `get_previous_month(date)`

Renvoie un objet date contenant le premier jour du mois précédant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

## `DayMixin`

#### `class DayMixin`

Une classe mixin pouvant être utilisée pour extraire et fournir des informations d’analyse pour le composant jour d’une date.

**Méthodes et attributs**

#### `day_format`

Le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction du jour. Par défaut, il s’agit de `'%d'`.

#### `day`

**Facultatif** La valeur du jour, sous forme de chaîne. Vaut `None` par défaut, ce qui signifie que le jour sera déterminé par d’autres moyens.

#### `get_day_format()`

Renvoie le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction du jour. Renvoie [`day_format`](#django.views.generic.dates.DayMixin.day_format) par défaut.

#### `get_day()`

Renvoie le jour pour lequel cette vue va afficher les données, sous forme de chaîne. Essaie les sources suivantes dans l’ordre :

- La valeur de l’attribut [`DayMixin.day`](#django.views.generic.dates.DayMixin.day).
- La valeur du paramètre `day` capturé dans le motif d’URL.
- La valeur du paramètre de requête `GET` `day`.

Génère une erreur 404 si aucune spécification valide du jour ne peut être trouvée.

#### `get_next_day(date)`

Renvoie un objet date contenant le jour valide suivant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

#### `get_previous_day(date)`

Renvoie un objet date contenant le jour valide précédant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

## `WeekMixin`

#### `class WeekMixin`

Une classe mixin pouvant être utilisée pour extraire et fournir des informations d’analyse pour le composant semaine d’une date.

**Méthodes et attributs**

#### `week_format`

Le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction de la semaine. Par défaut, il s’agit de `'%U'`, ce qui signifie que la semaine commence le dimanche. Définissez-le à `'%W'` si la semaine commence un lundi pour vous.

#### `week`

**Facultatif** La valeur de la semaine, sous forme de chaîne. Vaut `None` par défaut, ce qui signifie que la semaine sera déterminée par d’autres moyens.

#### `get_week_format()`

Renvoie le format [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) à utiliser lors de l’extraction de la semaine. Renvoie [`week_format`](#django.views.generic.dates.WeekMixin.week_format) par défaut.

#### `get_week()`

Renvoie la semaine pour laquelle cette vue va afficher les données, sous forme de chaîne. Essaie les sources suivantes dans l’ordre :

- La valeur de l’attribut [`WeekMixin.week`](#django.views.generic.dates.WeekMixin.week).
- La valeur du paramètre `week` capturé dans le motif d’URL.
- La valeur du paramètre de requête `GET` `week`.

Génère une erreur 404 si aucune spécification valide de la semaine ne peut être trouvée.

#### `get_next_week(date)`

Renvoie un objet date contenant le premier jour de la semaine suivant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

#### `get_prev_week(date)`

Renvoie un objet date contenant le premier jour de la semaine précédant la date indiquée. Cette fonction peut aussi renvoyer `None` ou générer une exception [`Http404`](/fr/2.1/topics/http/views/#django.http.Http404), en fonction des valeurs de [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) et de [`allow_future`](#django.views.generic.dates.DateMixin.allow_future).

## `DateMixin`

#### `class DateMixin`

Une classe mixin contenant le comportement commun de toutes les vues basées sur les dates.

**Méthodes et attributs**

#### `date_field`

Le nom du champ `DateField` ou `DateTimeField` dans le modèle du `QuerySet` que l’archive basée sur la date devra utiliser pour déterminer la liste des objets à afficher sur la page.

Lorsque la prise en charge des [fuseaux horaires](/fr/2.1/topics/i18n/timezones/) est activée et que `date_field` est un champ `DateTimeField`, on part du principe que les dates se trouvent dans le fuseau horaire actuel. Sinon, le jeu de requête pourrait inclure des objets du jour précédent ou suivant du fuseau horaire de l’utilisateur final.

> **Warning**
>
> Dans cette situation, si vous avez implémenté une sélection de fuseau horaire par utilisateur, la même URL pourrait afficher un ensemble d’objets différent en fonction du fuseau horaire de l’utilisateur final. Pour éviter cela, vous devriez utiliser un champ `DateField`  comme attribut `date_field`.

#### `allow_future`

Une valeur booléenne indiquant s’il faut inclure les objets « futurs » sur cette page, où « futur » implique les objets pour lesquels le champ spécifié dans `date_field` est plus grand que la date/heure actuelle. Par défaut, cet attribut vaut `False`.

#### `get_date_field()`

Renvoie le nom du champ contenant l’information de date sur laquelle cette vue va opérer. Renvoie [`date_field`](#django.views.generic.dates.DateMixin.date_field) par défaut.

#### `get_allow_future()`

Détermine s’il faut inclure les objets « futurs » sur cette page, où « futur » implique les objets pour lesquels le champ spécifié dans `date_field` est plus grand que la date/heure actuelle. Renvoie [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) par défaut.

## `BaseDateListView`

#### `class BaseDateListView`

Une classe de base fournissant un comportement commun pour toutes les vues basées sur les dates. Il n’y a en principe aucune raison d’instancier directement [`BaseDateListView`](#django.views.generic.dates.BaseDateListView); créez plutôt des instances de ses sous-classes.

Lors de l’exécution de cette vue (et de ses sous-classes), `self.object_list` contient la liste des objets sur lesquels intervient cette vue, et `self.date_list` contient la liste des dates pour lesquelles des données sont disponibles.

**Classes mixins**

- [`DateMixin`](#django.views.generic.dates.DateMixin)
- [`MultipleObjectMixin`](/fr/2.1/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin)

**Méthodes et attributs**

#### `allow_empty`

Une valeur booléenne indiquant s’il faut afficher la page lorsqu’aucun objet n’est disponible. Si cet attribut vaut `True` et qu’aucun objet n’est disponible, la vue affiche une page vide au lieu de générer une erreur 404.

C’est le même attribut que [`django.views.generic.list.MultipleObjectMixin.allow_empty`](/fr/2.1/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin.allow_empty), sauf que sa valeur par défaut est `False`.

#### `date_list_period`

**Facultatif** Une chaîne définissant la période d’agrégation de `date_list`. Elle ne peut contenir que “year”\` (année, par défaut), `'month'` (mois), ou `'day'` (jour).

#### `get_dated_items()`

Renvoie un tuple de 3 éléments contenant : (`date_list`, `object_list`, `extra_context`).

`date_list` est la liste des dates pour lesquelles des données sont disponibles. `object_list` est la liste des objets. `extra_context` est un dictionnaire de données de contexte qui seront ajoutées à tout autre contexte de données fourni par [`MultipleObjectMixin`](/fr/2.1/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin).

#### `get_dated_queryset(**lookup)`

Renvoie un jeu de requête, filtré par les paramètres de requête définis par `lookup`. Les restrictions sur le jeu de requête sont appliquées, telles que `allow_empty` et `allow_future`.

#### `get_date_list_period()`

Renvoie la période d’agrégation de `date_list`. Renvoie [`date_list_period`](#django.views.generic.dates.BaseDateListView.date_list_period) par défaut.

#### `get_date_list(queryset, date_type=None, ordering='ASC')`

Renvoie la liste des dates de type `date_type` pour lesquelles le jeu de requête `queryset` contient des éléments. Par exemple, `get_date_list(qs, 'year')` renvoie la liste des années pour lesquelles `qs` contient des éléments. Si `date_type` n’est pas indiqué, c’est le résultat de [`get_date_list_period()`](#django.views.generic.dates.BaseDateListView.get_date_list_period) qui est utilisé. `date_type` et `ordering` sont simplement transmis à [`QuerySet.dates()`](/fr/2.1/ref/models/querysets/#django.db.models.query.QuerySet.dates).
