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
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.urls import reverse
from django.db import models
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 ContactView(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(ContactView, self).form_valid(form) - Exemple myapp/contact.html : - <form action="" method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Send message" /> </form> 
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 - CreateViewaffichée lors d’une requête- GETutilise- '_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_nameserait- '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 AuthorCreate(CreateView): model = Author fields = ['name'] - Exemple myapp/author_form.html : - <form action="" method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Save" /> </form> 
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 - UpdateViewaffichée lors d’une requête- GETutilise- '_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_nameserait- '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 AuthorUpdate(UpdateView): model = Author fields = ['name'] template_name_suffix = '_update_form' - Exemple myapp/author_update_form.html : - <form action="" method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Update" /> </form> 
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- POSTvers 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.detail.BaseDetailView
- django.views.generic.detail.SingleObjectMixin
- django.views.generic.base.View
 - Attributs - 
template_name_suffix¶
- La page - DeleteViewaffichée lors d’une requête- GETutilise- '_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_nameserait- 'myapp/author_check_delete.html'.
 - Exemple myapp/views.py : - from django.views.generic.edit import DeleteView from django.urls import reverse_lazy from myapp.models import Author class AuthorDelete(DeleteView): model = Author success_url = reverse_lazy('author-list') - Exemple myapp/author_confirm_delete.html : - <form action="" method="post">{% csrf_token %} <p>Are you sure you want to delete "{{ object }}"?</p> <input type="submit" value="Confirm" /> </form> 
 
          