Как использовать django-debug-toolbar для вызовов AJAX? - PullRequest
51 голосов
/ 26 февраля 2011

Мне любопытно, есть ли разумный способ использовать (удивительную) панель инструментов django-debug-toolbar с AJAX-запросами.

Например, я использую jQuery $ .get с набором параметров, чтобы попасть в URL-адрес Django и загрузить его в строку. Если у меня есть ошибка, она не регистрируется на панели инструментов. Я также не могу использовать его, копируя URL-адрес AJAX, потому что DDT присоединяется к тегу body ответа, и не имеет никакого смысла включать теги body в ответы AJAX.

Любое направление будет полезно! Спасибо!

Ответы [ 4 ]

35 голосов
/ 17 октября 2013

У меня была такая же проблема раньше! И так как я все больше и больше работаю с тяжелыми приложениями AJAX, я выпустил Приложение Django и расширение Chrome , которые вместе решили именно эту проблему.

Вся информация находится в репозитории github.

16 голосов
/ 29 июля 2014

Я написал Панель истории запросов для Django Debug Toolbar , которую можно добавить на панель инструментов Django Debug Toolbar для просмотра запросов, отличных от текущего (включая запросы AJAX).


Установить через пипс:

pip install django-debug-toolbar-request-history


В settings.py добавьте 'ddt_request_history.panels.request_history.RequestHistoryPanel' к DEBUG_TOOLBAR_PANELS например ::

DEBUG_TOOLBAR_PANELS = [
    'ddt_request_history.panels.request_history.RequestHistoryPanel',  # Here it is 
    'debug_toolbar.panels.versions.VersionsPanel',
    'debug_toolbar.panels.timer.TimerPanel',
    'debug_toolbar.panels.settings.SettingsPanel',
    'debug_toolbar.panels.headers.HeadersPanel',
    'debug_toolbar.panels.request.RequestPanel',
    'debug_toolbar.panels.sql.SQLPanel',
    'debug_toolbar.panels.templates.TemplatesPanel',
    'debug_toolbar.panels.staticfiles.StaticFilesPanel',
    'debug_toolbar.panels.cache.CachePanel',
    'debug_toolbar.panels.signals.SignalsPanel',
    'debug_toolbar.panels.logging.LoggingPanel',
    'debug_toolbar.panels.redirects.RedirectsPanel',
    'debug_toolbar.panels.profiling.ProfilingPanel',
]
6 голосов
/ 07 августа 2013

Я недавно столкнулся с этой проблемой. Мое быстрое, но грязное, но работающее решение состояло в том, чтобы просто добавить несколько HTML-представлений для гибкого кода.

Так, например, если я вижу в NewRelic, что 90% времени моего веб-сайта тратится на вызов ajax / search_for_book? Title =, мой код может выглядеть следующим образом:

views.py:

def search_for_book(request, title):
    data = _search_for_book(title)
    return json_response(data)

def test_search_for_book(request, title):
    data = _search_for_book(title)
    return http_response(data)

Узкое место будет где-то в коде _search_for_book ; назовем ли мы его ajax, не имеет отношения к диагностике его неэффективности (в моем случае, по крайней мере, YMMV) * ​​1008 *

4 голосов
/ 26 февраля 2011

Ddt подключается к ответу, что означает, что не существует стандартного способа просмотра его панелей для запроса AJAX.Кроме того, ответ AJAX может быть в формате JSON, что делает невозможным подключение ddt к нему.

Лично я бы нашел способ записи вывода ddt в текстовый файл или, возможно, он поддерживает клиент-серверархитектура, в которой клиент работает внутри обработчика запросов AJAX и отправляет данные на сервер?Я не знаю, что возможно, потому что там есть дюжина клонов ДДТ.

...