Vues génériques d’édition | Documentation de Django (2024)

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 modelsfrom django.urls import reverseclass 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 formsclass 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 ContactFormfrom django.views.generic.edit import FormViewclass 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 CreateViewfrom myapp.models import Authorclass 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 UpdateViewfrom myapp.models import Authorclass 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_lazyfrom django.views.generic.edit import DeleteViewfrom myapp.models import Authorclass 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
Vues génériques d’édition | Documentation de Django (2024)
Top Articles
Latest Posts
Article information

Author: Kelle Weber

Last Updated:

Views: 6441

Rating: 4.2 / 5 (53 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Kelle Weber

Birthday: 2000-08-05

Address: 6796 Juan Square, Markfort, MN 58988

Phone: +8215934114615

Job: Hospitality Director

Hobby: tabletop games, Foreign language learning, Leather crafting, Horseback riding, Swimming, Knapping, Handball

Introduction: My name is Kelle Weber, I am a magnificent, enchanting, fair, joyous, light, determined, joyous person who loves writing and wants to share my knowledge and understanding with you.