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

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

Смотрите также

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

Примечание

Некоторые примеры на этой странице предполагают, что Authorмодель была определена следующим образом 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

класс django.views.generic.edit.FormView

Представление, отображающее форму. В случае ошибки повторно отображает форму с ошибками проверки; в случае успеха перенаправляет на новый URL.

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

Пример 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>
класс django.views.generic.edit.BaseFormView

Базовое представление для отображения формы. Он не предназначен для использования напрямую, а скорее как родительский класс для того django.views.generic.edit.FormViewили иного представления, отображающего форму.

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

CreateView

класс django.views.generic.edit.CreateView

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

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

Атрибуты

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>
класс django.views.generic.edit.BaseCreateView

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

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

Методы

get( запрос , * аргументы , ** kwargs )

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

post( запрос , * аргументы , ** kwargs )

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

UpdateView

класс django.views.generic.edit.UpdateView

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

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

Атрибуты

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>
класс django.views.generic.edit.BaseUpdateView

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

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

Методы

get( запрос , * аргументы , ** kwargs )

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

post( запрос , * аргументы , ** kwargs )

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

DeleteView

класс django.views.generic.edit.DeleteView

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

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

Атрибуты

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>
класс django.views.generic.edit.BaseDeleteView

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

Предки (ТОиР)

Это представление наследует методы и атрибуты следующих представлений:

Copyright ©2021 All rights reserved