A built-in mechanism for displaying one-time messages to the user.
Sending messages
from django.contrib import messages
def task_create(request):
if form.is_valid():
form.save()
messages.success(request, 'Задача успешно создана!')
return redirect('task-list')
messages.error(request, 'Ошибка при создании задачи.')
Message levels
messages.debug(request, 'Отладочное сообщение')
messages.info(request, 'Информация')
messages.success(request, 'Успешно!')
messages.warning(request, 'Внимание!')
messages.error(request, 'Ошибка!')
Displaying messages in a template
{% if messages %}
<div class="messages">
{% for message in messages %}
<div class="alert alert-{{ message.tags }}">
{{ message }}
</div>
{% endfor %}
</div>
{% endif %}
In the base template (base.html)
<!DOCTYPE html>
<html>
<body>
{% if messages %}
{% for message in messages %}
<div class="alert-{{ message.level_tag }}">{{ message }}</div>
{% endfor %}
{% endif %}
{% block content %}{% endblock %}
</body>
</html>
In CBVs
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic import CreateView
class TaskCreateView(SuccessMessageMixin, CreateView):
model = Task
fields = ['title', 'description']
success_message = 'Задача "%(title)s" создана!'
success_url = reverse_lazy('task-list')
Configuration
# settings.py — already configured by default
INSTALLED_APPS = [..., 'django.contrib.messages', ...]
MIDDLEWARE = [..., 'django.contrib.messages.middleware.MessageMiddleware', ...]
TEMPLATES = [{'OPTIONS': {'context_processors': [
'django.contrib.messages.context_processors.messages',
]}}]
💬 Comments (0)
No comments yet
Be the first to share your opinion about this article!