- en
- Language: fr
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.core.urlresolvers 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 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 AuthorCreate(CreateView): model = Author fields = ['name']
Exemple myapp/author_form.html :
<form action="" method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Create" /> </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 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 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 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.detail.BaseDetailView
- django.views.generic.detail.SingleObjectMixin
- django.views.generic.base.View
Attributs
- 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.views.generic.edit import DeleteView from django.core.urlresolvers 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>