Функция debug

Функция debug применяется для добавления сообщений уровня DEBUG в систему сообщений Django. Она позволяет разработчикам выводить отладочную информацию, которая будет отображаться в интерфейсе пользователя при включённом соответствующем уровне логирования. Функция принимает обязательный параметр message с текстом сообщения и необязательные параметры для дополнительной настройки.

Синтаксис

pythonfrom django.contrib import messages

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

Параметры функции:

Пример . Добавление отладочного сообщения

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

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

def my_view(request):
  # some logic here
  messages.debug(request, 'Page loaded successfully with debug info')
  return render(request, 'my_template.html')

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

Используем параметр extra_tags для добавления кастомного CSS-класса:

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

def process_data(request):
  # processing data
  messages.debug(
    request,
    'Data processing completed with debug mode',
    extra_tags='custom-debug'
  )
  return redirect('success_page')

Пример . С подавлением ошибок

Используем параметр fail_silently для подавления возможных ошибок:

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

def debug_view(request):
  try:
    # some risky operation
    result = calculate_complex_value()
    messages.debug(
      request,
      'Complex calculation result: ' + str(result),
      fail_silently=True
    )
  except Exception as e:
    messages.debug(
      request,
      'Error occurred: ' + str(e),
      fail_silently=True
    )
  return render(request, 'debug_template.html')

Пример . Вывод всех отладочных сообщений

Получим все отладочные сообщения для текущего запроса:

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

def show_debug_messages(request):
  messages.debug(request, 'First debug message')
  messages.debug(request, 'Second debug message with details')
  
  # Get all messages
  all_messages = messages.get_messages(request)
  
  debug_messages = [
    msg.message for msg in all_messages
    if msg.level == messages.DEBUG
  ]
  
  print(debug_messages)
  
  return render(request, 'messages_template.html')

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

python"['First debug message', 'Second debug message with details']"

Пример . В контексте веб-приложения

Покажем использование отладочных сообщений в полноценном представлении:

pythonfrom django.contrib import messages
from django.shortcuts import render, redirect
from myapp.models import Article

def article_debug_view(request, article_id):
  try:
    article = Article.objects.get(id=article_id)
    messages.debug(
      request,
      f'Article loaded: {article.title} (ID: {article.id})'
    )
    
    # Additional debug info
    messages.debug(
      request,
      f'Article status: {article.status}, created: {article.created_at}',
      extra_tags='debug-details'
    )
    
    return render(request, 'article_detail.html', {'article': article})
    
  except Article.DoesNotExist:
    messages.debug(
      request,
      f'Article with ID {article_id} not found',
      fail_silently=True
    )
    return redirect('article_list')

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

  • функция add_message,
    которая добавляет произвольное сообщение в систему
  • функция success,
    которая добавляет сообщение об успешном выполнении
  • функция error,
    которая добавляет сообщение об ошибке
  • функция get_messages,
    которая получает все сообщения для текущего запроса