---
title: "Vues génériques d’édition"
version: 5.0
locale: fr
source: https://docs.djangoproject.com/fr/5.0/ref/class-based-views/generic-editing/
canonical: https://djangodocs.dev/fr/5.0/ref/class-based-views/generic-editing/
---
# Vues génériques d’édition

Les vues suivantes sont décrites sur cette page et fournissent une base pour l’édition de contenu :

- [`django.views.generic.edit.FormView`](#django.views.generic.edit.FormView)
- [`django.views.generic.edit.CreateView`](#django.views.generic.edit.CreateView)
- [`django.views.generic.edit.UpdateView`](#django.views.generic.edit.UpdateView)
- [`django.views.generic.edit.DeleteView`](#django.views.generic.edit.DeleteView)

> **See also**
>
> [L’infrastructure des messages](/fr/5.0/ref/contrib/messages/) contient class:~django.contrib.messages.views.SuccessMessageMixin qui facilite la production de messages suite aux soumissions réussies de formulaires.

> **Note**
>
> Certains exemples de cette page partent du principe qu’un modèle `Author` a été défini comme dans le fichier `myapp/models.py` suivant :
>
> ```
> from django.db import models
> from django.urls import reverse
>
>
> class Author(models.Model):
>     name = models.CharField(max_length=200)
>
>     def get_absolute_url(self):
>         return reverse("author-detail", kwargs={"pk": self.pk})
> ```

## `FormView`

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

Une vue qui affiche un formulaire. En cas d’erreur, le formulaire est ré-affiché avec les erreurs de validation rencontrées ; en cas de succès, l’utilisateur est redirigé vers la nouvelle URL.

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.base.TemplateResponseMixin`](/fr/5.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseFormView`](#django.views.generic.edit.BaseFormView)
- [`django.views.generic.edit.FormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ProcessFormView`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/fr/5.0/ref/class-based-views/base/#django.views.generic.base.View)

**Exemple myapp/forms.py** :

```
from django import forms

class ContactForm(forms.Form):
    name = forms.CharField()
    message = forms.CharField(widget=forms.Textarea)

    def send_email(self):
        # send email using the self.cleaned_data dictionary
        pass
```

**Exemple myapp/views.py** :

```
from myapp.forms import ContactForm
from django.views.generic.edit import FormView

class ContactFormView(FormView):
    template_name = "contact.html"
    form_class = ContactForm
    success_url = "/thanks/"

    def form_valid(self, form):
        # This method is called when valid form data has been POSTed.
        # It should return an HttpResponse.
        form.send_email()
        return super().form_valid(form)
```

**Exemple myapp/contact.html** :

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Send message">
</form>
```

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

Une vue de base pour l’affichage d’un formulaire. Elle n’est pas conçue pour être utilisée directement, mais plutôt comme classe parente pour [`django.views.generic.edit.FormView`](#django.views.generic.edit.FormView) ou d’autres vues affichant un formulaire.

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.edit.FormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ProcessFormView`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

## `CreateView`

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

Une vue qui affiche un formulaire permettant la création d’objet, et qui ré-affiche le formulaire en cas d’erreurs de validation. En cas de succès, l’objet est enregistré.

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/fr/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/fr/5.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseCreateView`](#django.views.generic.edit.BaseCreateView)
- [`django.views.generic.edit.ModelFormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/fr/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/fr/5.0/ref/class-based-views/base/#django.views.generic.base.View)

**Attributs**

#### `template_name_suffix`

La page `CreateView` affichée lors d’une requête `GET` utilise `'_form'` comme valeur de `template_name_suffix`. Par exemple, en modifiant cet attribut à `'_create_form'` pour une vue créant des objets pour le modèle d’exemple `Author`, le contenu par défaut de `template_name` serait `'myapp/author_create_form.html'`.

#### `object`

Lors de l’utilisation de la vue `CreateView`, vous avez accès à `self.object`, qui constitue l’objet en cours de création. Si l’objet n’a pas encore été créé, sa valeur sera `None`.

**Exemple myapp/views.py** :

```
from django.views.generic.edit import CreateView
from myapp.models import Author

class AuthorCreateView(CreateView):
    model = Author
    fields = ["name"]
```

**Exemple myapp/author\_form.html** :

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>
```

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

Une vue de base pour la création d’une instance de nouvel objet. Elle n’est pas conçue pour être utilisée directement, mais plutôt comme classe parente pour [`django.views.generic.edit.CreateView`](#django.views.generic.edit.CreateView).

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.edit.ModelFormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

**Méthodes**

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

Définit l’instance d’objet actuelle (`self.object`) à `None`.

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

Définit l’instance d’objet actuelle (`self.object`) à `None`.

## `UpdateView`

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

Une vue qui affiche un formulaire permettant l’édition d’un objet existant, qui ré-affiche le formulaire en cas d’erreurs de validation et qui enregistre les modifications de l’objet s’il n’y a pas d’erreur. Cette vue utilise un formulaire généré automatiquement à partir de la classe de l’objet de modèle (sauf si une classe de formulaire a été explicitement indiquée).

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/fr/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/fr/5.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseUpdateView`](#django.views.generic.edit.BaseUpdateView)
- [`django.views.generic.edit.ModelFormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/fr/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/fr/5.0/ref/class-based-views/base/#django.views.generic.base.View)

**Attributs**

#### `template_name_suffix`

La page `UpdateView` affichée lors d’une requête `GET` utilise `'_form'` comme valeur de `template_name_suffix`. Par exemple, en modifiant cet attribut à `'_update_form'` pour une vue mettant à jour des objets pour le modèle d’exemple `Author`, le contenu par défaut de `template_name` serait `'myapp/author_update_form.html'`.

#### `object`

Lors de l’utilisation de la vue `UpdateView`, vous avez accès à `self.object`, qui constitue l’objet en cours de mise à jour.

**Exemple myapp/views.py** :

```
from django.views.generic.edit import UpdateView
from myapp.models import Author

class AuthorUpdateView(UpdateView):
    model = Author
    fields = ["name"]
    template_name_suffix = "_update_form"
```

**Exemple myapp/author\_update\_form.html** :

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Update">
</form>
```

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

Une vue de base pour la mise à jour d’une instance d’objet existante. Elle n’est pas conçue pour être utilisée directement, mais plutôt comme classe parente pour [`django.views.generic.edit.UpdateView`](#django.views.generic.edit.UpdateView).

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.edit.ModelFormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

**Méthodes**

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

Définit l’instance d’objet actuelle (`self.object`).

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

Définit l’instance d’objet actuelle (`self.object`).

## `DeleteView`

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

Une vue qui affiche une page de confirmation et supprime un objet existant. L’objet est supprimé uniquement si la requête est de type `POST`. Si la vue est appelée via une requête `GET`, elle affiche la page de confirmation qui contient un formulaire pour une requête `POST` vers la même URL.

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/fr/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/fr/5.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseDeleteView`](#django.views.generic.edit.BaseDeleteView)
- [`django.views.generic.edit.DeletionMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin)
- [`django.views.generic.edit.FormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.base.ContextMixin`](/fr/5.0/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin)
- [`django.views.generic.detail.BaseDetailView`](/fr/5.0/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView)
- [`django.views.generic.detail.SingleObjectMixin`](/fr/5.0/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.base.View`](/fr/5.0/ref/class-based-views/base/#django.views.generic.base.View)

**Attributs**

#### `form_class`

Hérité de [`BaseDeleteView`](#django.views.generic.edit.BaseDeleteView). La classe de formulaire qui sera utilisée pour confirmer la requête. Par défaut, [`django.forms.Form`](/fr/5.0/ref/forms/api/#django.forms.Form), ce qui produira un formulaire vide toujours valide.

En indiquant votre propre sous-classe de `Form`, vous pouvez ajouter des contraintes supplémentaires, comme par exemple une case à cocher de confirmation.

#### `template_name_suffix`

La page `DeleteView` affichée lors d’une requête `GET` utilise `'_confirm_delete'` comme valeur de `template_name_suffix`. Par exemple, en modifiant cet attribut à `'_check_delete'` pour une vue supprimant des objets pour le modèle d’exemple `Author`, le contenu par défaut de `template_name` serait `'myapp/author_check_delete.html'`.

**Exemple myapp/views.py** :

```
from django.urls import reverse_lazy
from django.views.generic.edit import DeleteView
from myapp.models import Author

class AuthorDeleteView(DeleteView):
    model = Author
    success_url = reverse_lazy("author-list")
```

**Exemple myapp/author\_confirm\_delete.html** :

```html+django
<form method="post">{% csrf_token %}
    <p>Are you sure you want to delete "{{ object }}"?</p>
    {{ form }}
    <input type="submit" value="Confirm">
</form>
```

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

Une vue de base pour la suppression d’une instance d’objet. Elle n’est pas conçue pour être utilisée directement, mais plutôt comme classe parente pour [`django.views.generic.edit.DeleteView`](#django.views.generic.edit.DeleteView).

**Ancêtres (MRO)**

Cette vue hérite des méthodes et des attributs des vues suivantes :

- [`django.views.generic.edit.DeletionMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin)
- [`django.views.generic.edit.FormMixin`](/fr/5.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.BaseDetailView`](/fr/5.0/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView)
