---
title: "Classes mixins d’édition"
version: 2.2
locale: fr
source: https://docs.djangoproject.com/fr/2.2/ref/class-based-views/mixins-editing/
canonical: https://djangodocs.dev/fr/2.2/ref/class-based-views/mixins-editing/
---
# Classes mixins d’édition

Les classes mixins suivantes sont utilisées pour construire les vues d’édition de Django :

- [`django.views.generic.edit.FormMixin`](#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ModelFormMixin`](#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.edit.DeletionMixin`](#django.views.generic.edit.DeletionMixin)

> **Note**
>
> Des exemples de la manière dont ces classes sont combinées pour former des vues d’édition se trouvent dans la documentation sur les [Vues génériques d’édition](/fr/2.2/ref/class-based-views/generic-editing/).

## `FormMixin`

#### `class django.views.generic.edit.FormMixin`

Une classe mixin fournissant des outils pour la création et l’affichage de formulaires.

**Classes mixins**

- [`django.views.generic.base.ContextMixin`](/fr/2.2/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin)

**Méthodes et attributs**

#### `initial`

Un dictionnaire contenant les données initiales du formulaire.

#### `form_class`

La classe de formulaire dont il faut créer une instance.

#### `success_url`

L’URL vers laquelle rediriger la réponse lorsque le formulaire est traité avec succès.

#### `prefix`

Le préfixe [`prefix`](/fr/2.2/ref/forms/api/#django.forms.Form.prefix) du formulaire généré.

#### `get_initial()`

Récupère les données initiales pour le formulaire. Par défaut, cette méthode renvoie une copie de [`initial`](#django.views.generic.edit.FormMixin.initial).

#### `get_form_class()`

Récupère la classe de formulaire dont il faut créer une instance. Par défaut, [`form_class`](#django.views.generic.edit.FormMixin.form_class).

#### `get_form(form_class=None)`

Crée une instance de `form_class` en utilisant [`get_form_kwargs()`](#django.views.generic.edit.FormMixin.get_form_kwargs). Si `form_class` n’est pas fourni, c’est [`get_form_class()`](#django.views.generic.edit.FormMixin.get_form_class) qui sera utilisée.

#### `get_form_kwargs()`

Construit les paramètres nommés requis pour créer une instance de formulaire.

Le paramètre `initial` est défini à [`get_initial()`](#django.views.generic.edit.FormMixin.get_initial). Si la requête est de type `POST` ou `PUT`, les données de la requête (`request.POST` et `request.FILES`) seront également fournies.

#### `get_prefix()`

Détermine le préfixe [`prefix`](/fr/2.2/ref/forms/api/#django.forms.Form.prefix) du formulaire généré. Renvoie [`prefix`](#django.views.generic.edit.FormMixin.prefix) par défaut.

#### `get_success_url()`

Détermine l’URL vers laquelle rediriger lorsque le formulaire est validé avec succès. Renvoie [`success_url`](#django.views.generic.edit.FormMixin.success_url) par défaut.

#### `form_valid(form)`

Redirige vers [`get_success_url()`](#django.views.generic.edit.FormMixin.get_success_url).

#### `form_invalid(form)`

Produit la réponse, en plaçant le formulaire non valide dans le contexte.

#### `get_context_data(**kwargs)`

Appelle [`get_form()`](#django.views.generic.edit.FormMixin.get_form) et ajoute le résultat aux données de contexte sous le nom `form`.

## `ModelFormMixin`

#### `class django.views.generic.edit.ModelFormMixin`

Une classe mixin de formulaire qui fonctionne avec les `ModelForms`, plutôt qu’avec des formulaires autonomes.

Comme il s’agit d’une sous-classe de [`SingleObjectMixin`](/fr/2.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin), les instances de cette classe mixin ont accès aux attributs [`model`](/fr/2.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.model) et [`queryset`](/fr/2.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset) décrivant le type d’objet que le formulaire `ModelForm` manipule.

Si vous définissez à la fois les attributs [`fields`](#django.views.generic.edit.ModelFormMixin.fields) et [`form_class`](#django.views.generic.edit.FormMixin.form_class), une exception [`ImproperlyConfigured`](/fr/2.2/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) est générée.

**Classes mixins**

- [`django.views.generic.edit.FormMixin`](#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/fr/2.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)

**Méthodes et attributs**

#### `model`

Une classe de modèle. Peut être fournie explicitement, sinon elle sera déterminée en examinant `self.object` ou [`queryset`](/fr/2.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset).

#### `fields`

Une liste de noms de champs. Cet attribut est interprété de la même manière que l’attribut `Meta.fields` de la classe [`ModelForm`](/fr/2.2/topics/forms/modelforms/#django.forms.ModelForm).

Il s’agit d’un attribut obligatoire si vous générez automatiquement la classe de formulaire (par ex. en utilisant `model`). En l’absence de cet attribut, une exception [`ImproperlyConfigured`](/fr/2.2/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) est générée.

#### `success_url`

L’URL vers laquelle rediriger la réponse lorsque le formulaire est traité avec succès.

`success_url` peut contenir des chaînes de format de type dictionnaire, qui seront substituées en utilisant les attributs de champs de l’objet. Par exemple, vous pourriez utiliser `success_url="/polls/{slug}/"` pour rediriger vers une URL composée à partir du champ `slug` d’un modèle.

#### `get_form_class()`

Récupère la classe de formulaire dont il faudra créer une instance. Si [`form_class`](#django.views.generic.edit.FormMixin.form_class) est définie, c’est cette classe qui sera utilisée. Sinon, une instance de formulaire `ModelForm` sera créée en se basant sur le modèle associé au contenu de  [`queryset`](/fr/2.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset) ou de [`model`](/fr/2.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.model), en fonction de l’attribut qui est défini.

#### `get_form_kwargs()`

Ajoute l’instance actuelle (`self.object`) au contenu standard de [`get_form_kwargs()`](#django.views.generic.edit.FormMixin.get_form_kwargs).

#### `get_success_url()`

Détermine l’URL vers laquelle rediriger lorsque le formulaire est validé avec succès. Renvoie [`django.views.generic.edit.ModelFormMixin.success_url`](#django.views.generic.edit.ModelFormMixin.success_url) s’il est défini ; sinon, essaie d’employer la valeur `get_absolute_url()` de l’objet.

#### `form_valid(form)`

Enregistre l’instance de formulaire, définit l’objet en cours de la vue et redirige vers [`get_success_url()`](#django.views.generic.edit.FormMixin.get_success_url).

#### `form_invalid(form)`

Produit la réponse, en plaçant le formulaire non valide dans le contexte.

## `ProcessFormView`

#### `class django.views.generic.edit.ProcessFormView`

Une classe mixin qui fournit la gestion de flux habituelle des requêtes HTTP GET et POST.

> **Note**
>
> Cette classe est nommée `ProcessFormView` et hérite directement de [`django.views.generic.base.View`](/fr/2.2/ref/class-based-views/base/#django.views.generic.base.View), mais elle ne peut pas être utilisée de manière indépendante, ce qui fait qu’elle est plutôt considérée comme une classe mixin.

**Étend**

- [`django.views.generic.base.View`](/fr/2.2/ref/class-based-views/base/#django.views.generic.base.View)

**Méthodes et attributs**

#### `get(request, *args, **kwargs)`

Produit une réponse en utilisant le contexte créé avec [`get_context_data()`](#django.views.generic.edit.FormMixin.get_context_data).

#### `post(request, *args, **kwargs)`

Construit un formulaire, vérifie la validité du formulaire et le traite en conséquence.

#### `put(*args, **kwargs)`

L’action `PUT` est également gérée, mais ne fait que transmettre tous les paramètres à [`post()`](#django.views.generic.edit.ProcessFormView.post).

## `DeletionMixin`

#### `class django.views.generic.edit.DeletionMixin`

Permet la gestion de l’action http `DELETE`.

**Méthodes et attributs**

#### `success_url`

L’URL vers laquelle rediriger lorsque l’objet concerné a été supprimé avec succès.

`success_url` peut contenir des chaînes de format de type dictionnaire, qui seront substituées en utilisant les attributs de champs de l’objet. Par exemple, vous pourriez utiliser `success_url="/parent/{parent_id}/"` pour rediriger vers une URL composée à partir du champ `parent_id` d’un modèle.

#### `delete(request, *args, **kwargs)`

Récupère l’objet cible et appelle sa méthode `delete()`, puis redirige vers l’URL de succès.

#### `get_success_url()`

Renvoie l’URL vers laquelle rediriger lorsque l’objet concerné a été supprimé avec succès. Renvoie [`success_url`](#django.views.generic.edit.DeletionMixin.success_url) par défaut.
