Функция error

Функция error применяется для регистрации сообщений с уровнем ошибки в системе сообщений Django. Она принимает объект запроса, строку сообщения и дополнительные аргументы. Сообщения, добавленные через эту функцию, затем могут быть отображены в шаблонах с помощью стандартных механизмов вывода сообщений Django.

Синтаксис

pythonfrom django.contrib import messages

messages.error(request, message, extra_tags='', fail_silently=False)

Параметры

Функция error принимает следующие параметры:

Пример . Использование в представлении

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

pythonfrom django.shortcuts import render
from django.contrib import messages
from django.http import Http404

def article_detail(request, article_id):
  try:
    # Имитация попытки получить статью
    if article_id > 100:
      raise Http404("Article not found")
    # Дальнейшая логика
    return render(request, 'article.html')
  except Http404:
    messages.error(request, "Article not found. Please try again later.")
    return render(request, 'error.html')

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

python"Message with ERROR level added to messages storage"

Пример . С дополнительными тегами

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

pythonfrom django.contrib import messages
from django.shortcuts import render

def user_login(request):
  # Проверка данных пользователя
  username = request.POST.get('username')
  password = request.POST.get('password')
  
  if username == 'admin' and password == 'secret':
    # Успешный вход
    return render(request, 'dashboard.html')
  else:
    messages.error(
      request,
      "Invalid credentials. Please check your username and password.",
      extra_tags='alert alert-danger'
    )
    return render(request, 'login.html')

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

python"Message with ERROR level and extra CSS classes: 'alert alert-danger'"

Пример . С отображением в шаблоне

Теперь рассмотрим, как отобразить сообщение об ошибке в шаблоне после его добавления в представлении:

python# views.py
from django.contrib import messages
from django.shortcuts import render

def process_payment(request):
  if not request.user.is_authenticated:
    messages.error(request, "You must be logged in to process payment.")
    return render(request, 'payment.html')
  # Логика обработки платежа
  return render(request, 'success.html')

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

python"Message added to request messages storage"

А в шаблоне можно вывести все сообщения следующим образом:

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

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

  • функция success,
    которая добавляет сообщение с уровнем SUCCESS
  • функция warning,
    которая добавляет сообщение с уровнем WARNING
  • функция info,
    которая добавляет сообщение с уровнем INFO
  • функция get_messages,
    которая позволяет получить все сообщения из хранилища