Вы хотите добавить Сообщение После Пользователь отправить
Форма Джанго: Пост
, Создать/обновить/удалить
методы
Предварительные условия
У вас должны быть ниже конфигурации в ваших настройках, чтобы показать сообщения в Django :
# settings.py INSTALLED_APPS = [ "django.contrib.messages", ] MIDDLEWARE = [ "django.contrib.sessions.middleware.SessionMiddleware", "django.contrib.messages.middleware.MessageMiddleware", ] TEMPLATES = [ { "OPTIONS": { "context_processors": [ "django.contrib.messages.context_processors.messages", ], }, ]
Добавить сообщение
Вы можете обновить свои собственные методы или классы для добавления сообщений, однако лучше использовать то, что Django предоставляет уже: Успехмсагемиксин
Анкет
Успехмсагемиксин добавляет атрибут сообщения успеха к FormView
на основе классов:
from django.contrib import messages class SuccessMessageMixin: """ Add a success message on successful form submission. """ success_message = '' def form_valid(self, form): response = super().form_valid(form) success_message = self.get_success_message(form.cleaned_data) if success_message: messages.success(self.request, success_message) return response def get_success_message(self, cleaned_data): return self.success_message % cleaned_data
Пример кода
В качестве экземпляра я покажу Просмотры
, URL
и Шаблон
:
Взгляды
#views.py from django.contrib.messages.views import SuccessMessageMixin from django.urls import reverse_lazy from django.views.generic.edit import UpdateView from .forms import BookCreateForm class BookUpdateView(SuccessMessageMixin, UpdateView): """ List all Book objects, update a Book object in database and add a success message into template. """ model = Book form_class = BookUpdateForm success_url = reverse_lazy('books:book-update') template_name = 'books/update.html' success_message = "%(book)s was updated successfully"
URL
# urls.py from django.utils.translation import ugettext_lazy as _ from .views import BookUpdateView path(_('book/update/'), BookUpdateView.as_view(), name='book-update'),
Шаблон
{% if messages %} {% for message in messages %}{% endfor %} {% endif %}
Все сделано!
Оригинал: “https://dev.to/serhatteker/show-message-in-class-based-views-django-4a4d”