Generic editing views
参见
The messages framework contains, whichfacilitates presenting messages about successful form submissions.
注解
Some of the examples on this page assume that an Author
model has beendefined as follows in myapp/models.py
:
- class
django.views.generic.edit.
FormView
- A view that displays a form. On error, redisplays the form with validationerrors; on success, redirects to a new URL.
Ancestors (MRO)
This view inherits methods and attributes from the following views:
django.views.generic.edit.BaseFormView
django.views.generic.edit.FormMixin
django.views.generic.base.View
Example 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
Example 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().form_valid(form)
Example myapp/contact.html:
- class
django.views.generic.edit.
CreateView
- A view that displays a form for creating an object, redisplaying the formwith validation errors (if there are any) and saving the object.
Ancestors (MRO)
django.views.generic.detail.SingleObjectTemplateResponseMixin
django.views.generic.edit.BaseCreateView
django.views.generic.edit.ModelFormMixin
django.views.generic.detail.SingleObjectMixin
django.views.generic.base.View
Attributestemplate_name_suffix
The
CreateView
page displayed to a request uses atemplate_name_suffix
of'_form'
. Forexample, changing this attribute to'_create_form'
for a viewcreating objects for the exampleAuthor
model would cause thedefaulttemplate_name
to be'myapp/author_create_form.html'
.- When using
CreateView
you have access toself.object
, which isthe object being created. If the object hasn't been created yet, thevalue will beNone
.
Example myapp/views.py:
- from django.views.generic.edit import CreateView
- from myapp.models import Author
- class AuthorCreate(CreateView):
- model = Author
- fields = ['name']
Example myapp/author_form.html:
- <form method="post">{% csrf_token %}
- {{ form.as_p }}
- <input type="submit" value="Save">
- </form>
- class
django.views.generic.edit.
UpdateView
- A view that displays a form for editing an existing object, redisplayingthe form with validation errors (if there are any) and saving changes tothe object. This uses a form automatically generated from the object'smodel class (unless a form class is manually specified).
Ancestors (MRO)
This view inherits methods and attributes from the following views:
django.views.generic.base.TemplateResponseMixin
django.views.generic.edit.BaseUpdateView
django.views.generic.edit.FormMixin
django.views.generic.edit.ProcessFormView
AttributesThe
UpdateView
page displayed to aGET
request uses atemplate_name_suffix
of'_form'
. Forexample, changing this attribute to for a viewupdating objects for the exampleAuthor
model would cause thedefaulttemplate_name
to be'myapp/author_update_form.html'
.- When using
UpdateView
you have access toself.object
, which isthe object being updated.
Example myapp/views.py:
Example myapp/author_update_form.html:
- <form method="post">{% csrf_token %}
- {{ form.as_p }}
- <input type="submit" value="Update">
- </form>
- 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
. Ifthis view is fetched viaGET
, it will display a confirmation page thatshould contain a form that POSTs to the same URL.
Ancestors (MRO)
This view inherits methods and attributes from the following views:
django.views.generic.detail.SingleObjectTemplateResponseMixin
django.views.generic.edit.BaseDeleteView
django.views.generic.edit.DeletionMixin
django.views.generic.detail.BaseDetailView
django.views.generic.base.View
Attributestemplate_name_suffix
- The
DeleteView
page displayed to aGET
request uses atemplate_name_suffix
of'_confirm_delete'
. Forexample, changing this attribute to'_check_delete'
for a viewdeleting objects for the exampleAuthor
model would cause thedefaulttemplate_name
to be .
Example myapp/views.py:
- from django.urls import reverse_lazy
- from django.views.generic.edit import DeleteView
- from myapp.models import Author
- class AuthorDelete(DeleteView):
- success_url = reverse_lazy('author-list')