Общие представления редактирования¶
T
- T
django.views.generic.edit.CreateViewdjango.views.generic.edit.UpdateViewdjango.views.generic.edit.DeleteView
См.также
T
Примечание
T
from django.db import models
from django.urls 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¶ Представление, отображающее форму. При ошибке происходит повторное отображение формы с ошибками валидации; при успехе происходит перенаправление на новый 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 ContactFormView(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)
Пример myapp/contact.html:
<form method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Send message"> </form>
-
class
django.views.generic.edit.BaseFormView¶ Базовое представление для отображения формы. Оно не предназначено для непосредственного использования, а скорее как родительский класс
django.views.generic.edit.FormViewили других представлений, отображающих форму.Предки (MRO).
Это представление наследует методы и атрибуты от следующих представлений:
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 AuthorCreateView(CreateView): model = Author fields = ['name']
Пример myapp/author_form.html:
<form method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Save"> </form>
-
class
django.views.generic.edit.BaseCreateView¶ Базовое представление для создания нового экземпляра объекта. Оно не предназначено для непосредственного использования, а скорее как родительский класс класса
django.views.generic.edit.CreateView.Предки (MRO).
Это представление наследует методы и атрибуты от следующих представлений:
Методы
-
get(request, *args, **kwargs)¶ Устанавливает текущий экземпляр объекта (
self.object) вNone.
-
post(request, *args, **kwargs)¶ Устанавливает текущий экземпляр объекта (
self.object) вNone.
-
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 AuthorUpdateView(UpdateView): model = Author fields = ['name'] template_name_suffix = '_update_form'
Пример myapp/author_update_form.html:
<form method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Update"> </form>
-
class
django.views.generic.edit.BaseUpdateView¶ Базовое представление для обновления существующего экземпляра объекта. Оно не предназначено для непосредственного использования, а скорее как родительский класс класса
django.views.generic.edit.UpdateView.Предки (MRO).
Это представление наследует методы и атрибуты от следующих представлений:
Методы
-
get(request, *args, **kwargs)¶ Устанавливает текущий экземпляр объекта (
self.object).
-
post(request, *args, **kwargs)¶ Устанавливает текущий экземпляр объекта (
self.object).
-
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.urls import reverse_lazy from django.views.generic.edit import DeleteView from myapp.models import Author class AuthorDeleteView(DeleteView): model = Author success_url = reverse_lazy('author-list')
Пример myapp/author_confirm_delete.html:
<form method="post">{% csrf_token %} <p>Are you sure you want to delete "{{ object }}"?</p> <input type="submit" value="Confirm"> </form>
-
class
django.views.generic.edit.BaseDeleteView¶ Базовое представление для удаления экземпляра объекта. Оно не предназначено для прямого использования, а скорее как родительский класс класса
django.views.generic.edit.DeleteView.Предки (MRO).
Это представление наследует методы и атрибуты от следующих представлений: