Как настроить Django Debug Toolbar для отображения запросов к Django REST Framework

Ответ

Да, Django Debug Toolbar (DDT) может перехватывать и анализировать запросы, сделанные через Django REST Framework (DRF), но для этого требуется специальная конфигурация.

По умолчанию DDT ориентирован на стандартные Django views, которые рендерят HTML, и может не отображаться для AJAX/API запросов, возвращающих JSON.

Чтобы это исправить, необходимо явно указать DDT, что панель нужно показывать всегда. Это делается через настройку SHOW_TOOLBAR_CALLBACK в settings.py.

Пример конфигурации в settings.py:

# settings.py

# ... другие настройки

# Убедитесь, что 'debug_toolbar' есть в INSTALLED_APPS
# и 'debug_toolbar.middleware.DebugToolbarMiddleware' в MIDDLEWARE

# Добавляем эту конфигурацию
if DEBUG:
    def show_toolbar(request):
        # Показываем панель для всех запросов
        return True

    DEBUG_TOOLBAR_CONFIG = {
        "SHOW_TOOLBAR_CALLBACK": show_toolbar,
    }

Важно: Django Debug Toolbar не должен использоваться в production-окружении, так как он раскрывает чувствительную информацию о конфигурации проекта и может создавать уязвимости.

Ответ 18+ 🔞

Ага, слушай, вот эта штука — Django Debug Toolbar, она же DDT, в принципе может и с Django REST Framework работать, но тут есть нюанс, ёпта.

По дефолту эта панелька заточена под обычные вьюхи, которые HTML выдают. А когда ты через DRF JSON'ы гоняешь — она может просто игнориться, как будто её и нет, блядь. Панель не появляется, и ты сидишь такой: «Ну и где же мои запросы, сука?».

Чтобы её заставить работать, нужно в настройках settings.py кое-что подкрутить. А именно — функцию SHOW_TOOLBAR_CALLBACK прописать, которая будет говорить панели: «Да показывайся ты уже, блядь, на всех запросах, не будь тварью!».

Вот смотри, как это в settings.py делается:

# settings.py

# ... остальной код настроек

# Главное, чтобы 'debug_toolbar' был в INSTALLED_APPS
# и 'debug_toolbar.middleware.DebugToolbarMiddleware' в MIDDLEWARE

# А вот это — магический пендель для панели
if DEBUG:
    def show_toolbar(request):
        # Возвращаем True всегда, чтобы панель лезла везде, даже в API
        return True

    DEBUG_TOOLBAR_CONFIG = {
        "SHOW_TOOLBAR_CALLBACK": show_toolbar,
    }

И запомни раз и навсегда, как «Отче наш»: эту панель — ни в коем случае на продакшене не оставляй! Это же пиздец какой дырявый колхоз получится. Она будет светить всю твою внутреннюю кухню — базы данных, запросы, настройки — всем подряд. Любой проходимец сможет заглянуть тебе под капот, а потом и в сраку. Так что только для отладки на локальной машине, и точка.