Функция warning
Функция warning применяется для добавления сообщений
с уровнем предупреждения в систему сообщений Django.
Она принимает обязательный параметр request (объект
запроса) и параметр message (текст сообщения),
а также необязательный параметр extra_tags для
дополнительных CSS-классов. Сообщения уровня warning
обычно отображаются с жёлтым или оранжевым стилем
в интерфейсе пользователя.
Синтаксис
from django.contrib import messages
messages.warning(request, message, extra_tags='')
Пример
Давайте добавим предупреждающее сообщение при попытке пользователя удалить важную запись:
from django.contrib import messages
from django.shortcuts import redirect
from myapp.models import Article
def delete_article(request, article_id):
article = Article.objects.get(id=article_id)
if article.is_important:
messages.warning(
request,
'This article is important and cannot be deleted'
)
return redirect('article_detail', article_id=article.id)
article.delete()
messages.success(request, 'Article deleted successfully')
return redirect('article_list')
Результат выполнения кода при попытке удалить важную статью:
"This article is important and cannot be deleted"
Пример
Давайте используем параметр extra_tags для добавления
пользовательских CSS-классов к предупреждающему сообщению:
from django.contrib import messages
from django.shortcuts import render
def user_profile(request, user_id):
if request.user.id != user_id:
messages.warning(
request,
'You are viewing someone else profile',
extra_tags='alert-warning custom-class'
)
context = {'user_id': user_id}
return render(request, 'profile.html', context)
Результат выполнения кода при просмотре чужого профиля:
"You are viewing someone else profile"
Пример
Давайте используем функцию warning внутри шаблона
для отображения предупреждения о несохранённых изменениях:
from django.contrib import messages
from django.shortcuts import render
from myapp.models import Article
def edit_article(request, article_id):
article = Article.objects.get(id=article_id)
if request.method == 'POST':
form = ArticleForm(request.POST, instance=article)
if form.is_valid():
form.save()
messages.success(request, 'Article updated successfully')
return redirect('article_detail', article_id=article.id)
else:
messages.warning(
request,
'Please correct the errors in the form'
)
else:
form = ArticleForm(instance=article)
messages.warning(
request,
'You have unsaved changes',
extra_tags='unsaved-changes'
)
return render(request, 'edit_article.html', {'form': form})
Результат выполнения кода при отображении формы редактирования:
"You have unsaved changes"