mirror of
				https://github.com/django/django.git
				synced 2025-10-26 07:06:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			200 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| =====================
 | |
| Generic editing views
 | |
| =====================
 | |
| 
 | |
| The following views are described on this page and provide a foundation for
 | |
| editing content:
 | |
| 
 | |
| * :class:`django.views.generic.edit.FormView`
 | |
| * :class:`django.views.generic.edit.CreateView`
 | |
| * :class:`django.views.generic.edit.UpdateView`
 | |
| * :class:`django.views.generic.edit.DeleteView`
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|     Some of the examples on this page assume that a model titled 'Author'
 | |
|     has been defined. For these cases we assume the following has been defined
 | |
|     in `myapp/models.py`::
 | |
| 
 | |
|         from django import models
 | |
|         from django.core.urlresolvers 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
 | |
| 
 | |
|     A view that displays a form. On error, redisplays the form with validation
 | |
|     errors; on success, redirects to a new URL.
 | |
| 
 | |
|     **Ancestors (MRO)**
 | |
| 
 | |
|     This view inherits methods and attributes from the following views:
 | |
| 
 | |
|     * :class:`django.views.generic.edit.FormView`
 | |
|     * :class:`django.views.generic.base.TemplateResponseMixin`
 | |
|     * :class:`django.views.generic.edit.BaseFormView`
 | |
|     * :class:`django.views.generic.edit.FormMixin`
 | |
|     * :class:`django.views.generic.edit.ProcessFormView`
 | |
|     * :class:`django.views.generic.base.View`
 | |
| 
 | |
|     **Example 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
 | |
| 
 | |
|     **Example 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)
 | |
| 
 | |
| CreateView
 | |
| ----------
 | |
| 
 | |
| .. class:: django.views.generic.edit.CreateView
 | |
| 
 | |
|     A view that displays a form for creating an object, redisplaying the form
 | |
|     with validation errors (if there are any) and saving the object.
 | |
| 
 | |
|     **Ancestors (MRO)**
 | |
| 
 | |
|     This view inherits methods and attributes from the following views:
 | |
| 
 | |
|     * :class:`django.views.generic.edit.CreateView`
 | |
|     * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`
 | |
|     * :class:`django.views.generic.base.TemplateResponseMixin`
 | |
|     * :class:`django.views.generic.edit.BaseCreateView`
 | |
|     * :class:`django.views.generic.edit.ModelFormMixin`
 | |
|     * :class:`django.views.generic.edit.FormMixin`
 | |
|     * :class:`django.views.generic.detail.SingleObjectMixin`
 | |
|     * :class:`django.views.generic.edit.ProcessFormView`
 | |
|     * :class:`django.views.generic.base.View`
 | |
| 
 | |
|     **Attributes**
 | |
| 
 | |
|     .. attribute:: template_name_suffix
 | |
| 
 | |
|         The CreateView page displayed to a GET request uses a
 | |
|         ``template_name_suffix`` of ``'_form.html'``. For
 | |
|         example, changing this attribute to ``'_create_form.html'`` for a view
 | |
|         creating objects for the the example `Author` model would cause the the
 | |
|         default `template_name` to be ``'myapp/author_create_form.html'``.
 | |
| 
 | |
|     **Example views.py**::
 | |
| 
 | |
|         from django.views.generic.edit import CreateView
 | |
|         from myapp.models import Author
 | |
| 
 | |
|         class AuthorCreate(CreateView):
 | |
|             model = Author
 | |
| 
 | |
| UpdateView
 | |
| ----------
 | |
| 
 | |
| .. class:: django.views.generic.edit.UpdateView
 | |
| 
 | |
|     A view that displays a form for editing an existing object, redisplaying
 | |
|     the form with validation errors (if there are any) and saving changes to
 | |
|     the object. This uses a form automatically generated from the object's
 | |
|     model class (unless a form class is manually specified).
 | |
| 
 | |
|     **Ancestors (MRO)**
 | |
| 
 | |
|     This view inherits methods and attributes from the following views:
 | |
| 
 | |
|     * :class:`django.views.generic.edit.UpdateView`
 | |
|     * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`
 | |
|     * :class:`django.views.generic.base.TemplateResponseMixin`
 | |
|     * :class:`django.views.generic.edit.BaseUpdateView`
 | |
|     * :class:`django.views.generic.edit.ModelFormMixin`
 | |
|     * :class:`django.views.generic.edit.FormMixin`
 | |
|     * :class:`django.views.generic.detail.SingleObjectMixin`
 | |
|     * :class:`django.views.generic.edit.ProcessFormView`
 | |
|     * :class:`django.views.generic.base.View`
 | |
| 
 | |
|     **Attributes**
 | |
| 
 | |
|     .. attribute:: template_name_suffix
 | |
| 
 | |
|         The UpdateView page displayed to a GET request uses a
 | |
|         ``template_name_suffix`` of ``'_form.html'``. For
 | |
|         example, changing this attribute to ``'_update_form.html'`` for a view
 | |
|         updating objects for the the example `Author` model would cause the the
 | |
|         default `template_name` to be ``'myapp/author_update_form.html'``.
 | |
| 
 | |
|     **Example views.py**::
 | |
| 
 | |
|         from django.views.generic.edit import UpdateView
 | |
|         from myapp.models import Author
 | |
| 
 | |
|         class AuthorUpdate(UpdateView):
 | |
|             model = Author
 | |
| 
 | |
| DeleteView
 | |
| ----------
 | |
| 
 | |
| .. class:: django.views.generic.edit.DeleteView
 | |
| 
 | |
|     A view that displays a confirmation page and deletes an existing object.
 | |
|     The given object will only be deleted if the request method is ``POST``. If
 | |
|     this view is fetched via ``GET``, it will display a confirmation page that
 | |
|     should contain a form that POSTs to the same URL.
 | |
| 
 | |
|     **Ancestors (MRO)**
 | |
| 
 | |
|     This view inherits methods and attributes from the following views:
 | |
| 
 | |
|     * :class:`django.views.generic.edit.DeleteView`
 | |
|     * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`
 | |
|     * :class:`django.views.generic.base.TemplateResponseMixin`
 | |
|     * :class:`django.views.generic.edit.BaseDeleteView`
 | |
|     * :class:`django.views.generic.edit.DeletionMixin`
 | |
|     * :class:`django.views.generic.detail.BaseDetailView`
 | |
|     * :class:`django.views.generic.detail.SingleObjectMixin`
 | |
|     * :class:`django.views.generic.base.View`
 | |
| 
 | |
|     **Attributes**
 | |
| 
 | |
|     .. attribute:: template_name_suffix
 | |
| 
 | |
|         The DeleteView page displayed to a GET request uses a
 | |
|         ``template_name_suffix`` of ``'_confirm_delete.html'``. For
 | |
|         example, changing this attribute to ``'_check_delete.html'`` for a view
 | |
|         deleting objects for the the example `Author` model would cause the the
 | |
|         default `template_name` to be ``'myapp/author_check_delete.html'``.
 | |
| 
 | |
| 
 | |
|     **Example 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')
 |