• 3.1
  • 3.2
  • 6.1
  • Версия документации: 5.0

Общие представления редактирования

На этой странице описаны следующие представления, которые служат основой для редактирования контента:

См.также

структура сообщений содержит SuccessMessageMixin, который упрощает представление сообщений об успешной отправке форм.

Примечание

В некоторых примерах на этой странице предполагается, что модель «Автор» определена в файле «myapp/models.py» следующим образом:

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.

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

Пример 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 или других представлений, отображающих форму.

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

CreateView

class django.views.generic.edit.CreateView

Представление, отображающее форму для создания объекта, повторное отображение формы с ошибками проверки (если они есть) и сохранение объекта.

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

Атрибуты

template_name_suffix

Страница CreateView, отображаемая по запросу GET, использует суффикс template_name_form из '_form'. Например, изменение этого атрибута на '_create_form' для представления, создающего объекты для примера модели Author, приведет к тому, что template_name по умолчанию будет 'myapp/author_create_form.html'.

object

При использовании CreateView у вас есть доступ к self.object, который является создаваемым объектом. Если объект еще не создан, значением будет «Нет».

Пример 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.

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

Методы

get(request, *args, **kwargs)

Устанавливает текущий экземпляр объекта (self.object) в None.

post(request, *args, **kwargs)

Устанавливает текущий экземпляр объекта (self.object) в None.

UpdateView

class django.views.generic.edit.UpdateView

Представление, отображающее форму редактирования существующего объекта, повторное отображение формы с ошибками проверки (если они есть) и сохранение изменений в объекте. При этом используется форма, автоматически сгенерированная из класса модели объекта (если класс формы не указан вручную).

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

Атрибуты

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.

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

Методы

get(request, *args, **kwargs)

Устанавливает текущий экземпляр объекта («self.object»).

post(request, *args, **kwargs)

Устанавливает текущий экземпляр объекта («self.object»).

DeleteView

class django.views.generic.edit.DeleteView

Представление, отображающее страницу подтверждения и удаляющее существующий объект. Данный объект будет удален только в том случае, если метод запроса — POST. Если это представление получено через GET, оно отобразит страницу подтверждения, которая должна содержать форму, которая отправляется POST на тот же URL-адрес.

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

Атрибуты

form_class

Унаследовано от BaseDeleteView. Класс формы, который будет использоваться для подтверждения запроса. По умолчанию django.forms.Form, что приводит к пустой форме, которая всегда действительна.

Предоставляя свой собственный подкласс Form, вы можете добавить дополнительные требования, например, флажок подтверждения.

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>
    {{ form }}
    <input type="submit" value="Confirm">
</form>
class django.views.generic.edit.BaseDeleteView

Базовое представление для удаления экземпляра объекта. Он не предназначен для прямого использования, а скорее как родительский класс django.views.generic.edit.DeleteView.

Классы-предки, Ancestors (MRO)

Представление наследует методы и атрибуты из следующего представления:

Back to Top