# Documentation Django 6.0.7

# 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.CreateView`

- `django.views.generic.edit.UpdateView`

- `django.views.generic.edit.DeleteView`

Voir aussi

L’infrastructure des 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`

  - `django.views.generic.edit.BaseFormView`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.edit.ProcessFormView`

  - `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 :

      <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` 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`

  - `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`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.edit.BaseCreateView`

  - `django.views.generic.edit.ModelFormMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.detail.SingleObjectMixin`

  - `django.views.generic.edit.ProcessFormView`

  - `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 :

      <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`.

  Ancêtres (MRO)

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

  - `django.views.generic.edit.ModelFormMixin`

  - `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`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.edit.BaseUpdateView`

  - `django.views.generic.edit.ModelFormMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.detail.SingleObjectMixin`

  - `django.views.generic.edit.ProcessFormView`

  - `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 :

      <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`.

  Ancêtres (MRO)

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

  - `django.views.generic.edit.ModelFormMixin`

  - `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`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.edit.BaseDeleteView`

  - `django.views.generic.edit.DeletionMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.base.ContextMixin`

  - `django.views.generic.detail.BaseDetailView`

  - `django.views.generic.detail.SingleObjectMixin`

  - `django.views.generic.base.View`

  Attributs

  form_class

    Hérité de `BaseDeleteView`. La classe de formulaire qui sera utilisée pour confirmer la requête. Par défaut, `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 :

      <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`.

  Ancêtres (MRO)

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

  - `django.views.generic.edit.DeletionMixin`

  - `django.views.generic.edit.FormMixin`

  - `django.views.generic.detail.BaseDetailView`