РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
378 of 818 menu

Функция error

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

Синтаксис

from django.contrib import messages messages.error(request, message, extra_tags='', fail_silently=False)

Параметры

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

  • ⁅b⁆request⁅/b⁆ - объект HTTP-запроса, обязательный параметр, через который передается хранилище сообщений
  • ⁅b⁆message⁅/b⁆ - строка с текстом сообщения, обязательный параметр, который будет отображаться пользователю
  • ⁅b⁆extra_tags⁅/b⁆ - необязательный параметр, строка с дополнительными CSS-классами для сообщения
  • ⁅b⁆fail_silently⁅/b⁆ - необязательный параметр, булево значение, указывающее, нужно ли подавлять исключения при работе с хранилищем сообщений (по умолчанию False)

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

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

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

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

"Message with ERROR level added to messages storage"

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

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

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

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

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

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

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

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

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

"Message added to request messages storage"

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

{% 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,
    которая позволяет получить все сообщения из хранилища
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить