Функция add_message
Функция add_message применяется для добавления сообщений в систему
уведомлений Django. Сообщения сохраняются в сессии пользователя
и отображаются при следующем рендеринге шаблона. Функция принимает
объект запроса, уровень важности сообщения, текст сообщения и
дополнительные параметры. Уровни важности определяются
константами модуля messages.
Синтаксис
from django.contrib import messages
messages.add_message(request, level, message, extra_tags='', fail_silently=False)
Параметры
Функция принимает следующие параметры:
-
request- объект запросаHttpRequest -
level- уровень важности сообщения (константы изdjango.contrib.messages) -
message- текст сообщения (строка) -
extra_tags- дополнительные CSS-классы для сообщения (опционально) -
fail_silently- подавлять ли ошибки при добавлении сообщения (опционально)
Пример
Добавим успешное сообщение после сохранения статьи в базе данных:
from django.contrib import messages
from django.shortcuts import redirect
from myapp.models import Article
def create_article(request):
if request.method == 'POST':
title = request.POST.get('title')
content = request.POST.get('content')
article = Article.objects.create(
title=title,
content=content
)
messages.add_message(
request,
messages.SUCCESS,
'Article created successfully'
)
return redirect('article_list')
return render(request, 'article_form.html')
Пример
Добавим сообщение об ошибке с дополнительными CSS-классами:
from django.contrib import messages
from django.shortcuts import redirect
def delete_article(request, pk):
try:
article = Article.objects.get(pk=pk)
article.delete()
messages.add_message(
request,
messages.SUCCESS,
'Article deleted successfully'
)
except Article.DoesNotExist:
messages.add_message(
request,
messages.ERROR,
'Article not found',
extra_tags='danger'
)
return redirect('article_list')
Пример
Добавим информационное сообщение с использованием встроенных функций-обёрток:
from django.contrib import messages
from django.shortcuts import redirect
def update_article(request, pk):
if request.method == 'POST':
try:
article = Article.objects.get(pk=pk)
article.title = request.POST.get('title')
article.save()
messages.success(
request,
'Article updated successfully'
)
except Article.DoesNotExist:
messages.error(
request,
'Article not found for update'
)
return redirect('article_detail', pk=pk)
return render(request, 'article_form.html')
Пример
Получим все сообщения для отображения в шаблоне:
from django.contrib import messages
def show_messages(request):
storage = messages.get_messages(request)
res = []
for message in storage:
res.append({
'level': message.level,
'message': message.message,
'tags': message.tags
})
return render(request, 'messages.html', {'messages': res})
Результат выполнения кода:
[
{'level': 25, 'message': 'Article created successfully', 'tags': 'success'},
{'level': 40, 'message': 'Article not found', 'tags': 'error danger'}
]
Смотрите также
-
функция
success,
которая добавляет успешное сообщение -
функция
error,
которая добавляет сообщение об ошибке -
функция
info,
которая добавляет информационное сообщение -
функция
get_messages,
которая получает все сообщения из хранилища