Функция warning

Функция warning применяется для добавления сообщений с уровнем предупреждения в систему сообщений Django. Она принимает обязательный параметр request (объект запроса) и параметр message (текст сообщения), а также необязательный параметр extra_tags для дополнительных CSS-классов. Сообщения уровня warning обычно отображаются с жёлтым или оранжевым стилем в интерфейсе пользователя.

Синтаксис

pythonfrom django.contrib import messages

messages.warning(request, message, extra_tags='')

Пример

Давайте добавим предупреждающее сообщение при попытке пользователя удалить важную запись:

pythonfrom 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')

Результат выполнения кода при попытке удалить важную статью:

python"This article is important and cannot be deleted"

Пример

Давайте используем параметр extra_tags для добавления пользовательских CSS-классов к предупреждающему сообщению:

pythonfrom 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)

Результат выполнения кода при просмотре чужого профиля:

python"You are viewing someone else profile"

Пример

Давайте используем функцию warning внутри шаблона для отображения предупреждения о несохранённых изменениях:

pythonfrom 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})

Результат выполнения кода при отображении формы редактирования:

python"You have unsaved changes"

Смотрите также

  • функция success,
    которая добавляет сообщение об успешном действии
  • функция error,
    которая добавляет сообщение об ошибке
  • функция info,
    которая добавляет информационное сообщение
  • функция debug,
    которая добавляет отладочное сообщение