📝 Django

SuccessMessageMixin в Django

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
72
🌿
Уровень
Средний
🐦 💼 ✈️

SuccessMessageMixin — миксин для отображения flash-сообщения после успешного выполнения формы в CBV.

Установка

Не требует установки — входит в Django:

from django.contrib.messages.views import SuccessMessageMixin

Базовое использование

from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic import CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import Task

class TaskCreateView(SuccessMessageMixin, CreateView):
    model = Task
    fields = ['title', 'description', 'priority']
    success_url = reverse_lazy('task-list')
    success_message = 'Задача "%(title)s" успешно создана!'

class TaskUpdateView(SuccessMessageMixin, UpdateView):
    model = Task
    fields = ['title', 'description', 'priority', 'status']
    success_url = reverse_lazy('task-list')
    success_message = 'Задача обновлена!'

Динамическое сообщение

class TaskCreateView(SuccessMessageMixin, CreateView):
    model = Task
    fields = ['title']
    success_url = reverse_lazy('task-list')

    def get_success_message(self, cleaned_data):
        return f'Задача "{self.object.title}" создана и назначена вам!'

Отображение в шаблоне

{% if messages %}
  {% for message in messages %}
    <div class="alert alert-{{ message.tags }}">
      {{ message }}
    </div>
  {% endfor %}
{% endif %}

Порядок наследования

# Правильно: SuccessMessageMixin ПЕРЕД базовым классом
class TaskCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
    ...

# Неправильно
class TaskCreateView(CreateView, SuccessMessageMixin):  # не сработает
    ...

Аналог для function-based views

from django.contrib import messages

def task_create(request):
    if form.is_valid():
        task = form.save()
        messages.success(request, f'Задача "{task.title}" создана!')
        return redirect('task-list')

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 138
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 91
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 79

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!