Общие представления для редактирования
На этой странице описываются следующие представления, которые служат основой для редактирования содержимого:
django.views.generic.edit.FormViewdjango.views.generic.edit.CreateViewdjango.views.generic.edit.UpdateViewdjango.views.generic.edit.DeleteView
Примечание
Некоторые примеры на этой странице предполагают, что модель Author определена следующим образом в myapp/models.py$:
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 -
Представление, отображающее форму. При ошибке форма отображается повторно с ошибками валидации; при успехе происходит переадресация на новый 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 -
Страница, отображаемая запросу
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 -
Страница, отображаемая запросу
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 -
Страница, отображаемая запросу
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.urls 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.10/ref/class-based-views/generic-editing/