Общие представления для редактирования
На этой странице описаны следующие представления, которые предоставляют основу для редактирования контента:
django.views.generic.edit.FormViewdjango.views.generic.edit.CreateViewdjango.views.generic.edit.UpdateViewdjango.views.generic.edit.DeleteView
Примечание
Некоторые примеры на этой странице предполагают, что модель Author определена следующим образом в myapp/models.py$:
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 -
Представление, отображающее форму. При ошибке форма повторно отображается с ошибками валидации; при успехе происходит переадресация на новый URL.
Предки (MRO)
Это представление наследует методы и атрибуты от следующих представлений:
django.views.generic.base.TemplateResponseMixindjango.views.generic.edit.BaseFormViewdjango.views.generic.edit.FormMixindjango.views.generic.edit.ProcessFormViewdjango.views.generic.base.View
Пример 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Пример 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)Пример 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 -
Представление, отображающее форму для создания объекта, повторно отображающее форму с ошибками валидации (если таковые имеются) и сохраняющее объект.
Предки (MRO)
Это представление наследует методы и атрибуты от следующих представлений:
django.views.generic.detail.SingleObjectTemplateResponseMixindjango.views.generic.base.TemplateResponseMixindjango.views.generic.edit.BaseCreateViewdjango.views.generic.edit.ModelFormMixindjango.views.generic.edit.FormMixindjango.views.generic.detail.SingleObjectMixindjango.views.generic.edit.ProcessFormViewdjango.views.generic.base.View
Атрибуты
-
template_name_suffix -
Страница
CreateView, отображаемая для запросаGET, использует суффиксtemplate_name_suffix'_form'. Например, изменение этого атрибута на'_create_form'для представления, создающего объекты для моделиAuthor, приведет к тому, что значение по умолчаниюtemplate_nameстанет'myapp/author_create_form.html'.
-
object -
При использовании
CreateView, у вас есть доступ кself.object, представляющему создаваемый объект. Если объект еще не создан, значение будетNone.
Пример myapp/views.py:
from django.views.generic.edit import CreateView from myapp.models import Author class AuthorCreate(CreateView): model = Author fields = ['name']Пример 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 -
Представление, отображающее форму для редактирования существующего объекта, повторно отображающее форму с ошибками валидации (если таковые имеются) и сохраняющее изменения в объекте. Использует форму, автоматически сгенерированную из класса модели объекта (если не указан класс формы вручную).
Предки (MRO)
Это представление наследует методы и атрибуты от следующих представлений:
django.views.generic.detail.SingleObjectTemplateResponseMixindjango.views.generic.base.TemplateResponseMixindjango.views.generic.edit.BaseUpdateViewdjango.views.generic.edit.ModelFormMixindjango.views.generic.edit.FormMixindjango.views.generic.detail.SingleObjectMixindjango.views.generic.edit.ProcessFormViewdjango.views.generic.base.View
Атрибуты
-
template_name_suffix -
Страница
UpdateView, отображаемая для запросаGET, использует суффиксtemplate_name_suffix'_form'. Например, изменение этого атрибута на'_update_form'для представления, обновляющего объекты для моделиAuthor, приведет к тому, что значение по умолчаниюtemplate_nameстанет'myapp/author_update_form.html'.
-
object -
При использовании
UpdateView, у вас есть доступ кself.object, представляющему обновляемый объект.
Пример 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'Пример 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 -
Представление, отображающее страницу подтверждения и удаляющее существующий объект. Объект будет удален только если метод запроса равен
POST. Если это представление получено черезGET, будет отображена страница подтверждения, содержащая форму, которая отправляет POST-запрос на тот же URL.Предки (MRO)
Это представление наследует методы и атрибуты от следующих представлений:
django.views.generic.detail.SingleObjectTemplateResponseMixindjango.views.generic.base.TemplateResponseMixindjango.views.generic.edit.BaseDeleteViewdjango.views.generic.edit.DeletionMixindjango.views.generic.detail.BaseDetailViewdjango.views.generic.detail.SingleObjectMixindjango.views.generic.base.View
Атрибуты
-
template_name_suffix -
Страница
DeleteView, отображаемая для запросаGET, использует суффиксtemplate_name_suffix'_confirm_delete'. Например, изменение этого атрибута на'_check_delete'для представления, удаляющего объекты для моделиAuthor, приведет к тому, что значение по умолчаниюtemplate_nameстанет'myapp/author_check_delete.html'.
Пример 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')Пример 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>
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/ref/class-based-views/generic-editing/