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

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

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

Структура сообщений содержит класс: ~ django.contrib.messages.views.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 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().form_valid(form)

Myapp / contact.html пример  :

<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Send message">
</form>

CreateView

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

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

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

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

Атрибуты

template_name_suffix

Страница, CreateView отображаемая во время запроса, GET использует '_form' в качестве значения template_name_suffix . Например, изменив этот атрибут на '_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 method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>

UpdateView

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

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

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

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

Атрибуты

template_name_suffix

Страница, UpdateView отображаемая во время запроса, GET использует '_form' в качестве значения template_name_suffix . Например, изменив этот атрибут на '_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 method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Update">
</form>

DeleteView

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

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

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

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

Атрибуты

template_name_suffix

Страница, DeleteView отображаемая во время запроса, GET использует '_confirm_delete' в качестве значения template_name_suffix . Например, изменив этот атрибут на '_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 AuthorDelete(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>

Copyright ©2020 All rights reserved