Как отключить панель инструментов отладки Django во время рендеринга шаблона?

Я использую панель инструментов отладки Django в своей среде разработки, и она очень полезна для отладки. Однако я хочу отключить ее при рендеринге определенного шаблона. Есть ли способ условно отключить панель инструментов отладки для определенных представлений или шаблонов?

Вот что я пробовал до сих пор:

  • Использование настроек.отлаживать: Я знаю, что панель инструментов отображается только при DEBUG = True в settings.py, но я не хочу отключать ее для всего проекта, только для определенных представлений или шаблонов.
  • Контекст шаблона: я также рассматривал возможность передачи переменной контекста в шаблон для управления видимостью панели инструментов, но я не уверен, как это интегрировать с поведением панели инструментов.

Вот упрощенная версия моей точки зрения:

from django.shortcuts import render

def my_view(request):
    context = {'some_data': 'data'}
    return render(request, 'my_template.html', context)

И в моем settings.py:

DEBUG = True

if DEBUG:
    INSTALLED_APPS += ['debug_toolbar']
    MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware']

версия django_debug_toolbar - 3.8.1

Есть ли способ отключить панель инструментов отладки Django специально для этого представления или шаблона?

Вы можете указать SHOW_TOOLBAR_CALLBACK, который определяет, хотите ли вы показывать панель инструментов для определенного запроса:

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': 'app_name.debug.show_toolbar',
}

а затем проверьте путь запроса:

# app_name/debug.py

def show_toolbar(request):
    # The toolbar renders correctly except for my view.
    return request.path != '/path/to/my-view/'

или мы можем сначала попытаться решить эту проблему:

# app_name/debug.py

from django.urls import resolve

def show_toolbar(request):
    return resolve(request.path).func is not my_view
Вернуться на верх