64

我很好奇是否有一种合理的方法可以将(惊人的)django-debug-toolbar 与 AJAX 查询一起使用。

例如,我使用带有一堆参数的 jQuery $.get 来访问 Django URL 并内联加载它。如果我有一个错误,它没有在工具栏上注册。我也不能通过复制 AJAX URL 来使用它,因为 DDT 附加到响应的正文标记,并且在 AJAX 响应中包含正文标记没有任何意义。

任何方向都会有所帮助!谢谢!

4

4 回答 4

35

更新:这个功能现在内置到 django-debug-toolbar

在本次PR中添加并在 3.0 版本中发布


旧答案可能对旧版本的工具栏仍然有用:

我为 Django Debug Toolbar 编写了Request History Panel,可以将其添加到 Django Debug Toolbar 以查看当前请求以外的请求(包括 AJAX 请求)。

通过 pip 安装:

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',
]
于 2014-07-29T14:13:00.397 回答
34

我以前也有同样的问题!随着我做越来越多的 AJAX 繁重的应用程序,我发布了一个Django 应用程序和一个Chrome 扩展程序,它们一起解决了这个问题。

所有信息都在 github 存储库中。

于 2013-10-17T05:55:50.513 回答
7

我最近遇到了这个问题。我的快速-n-dirty-but-working 解决方案只是添加一些 HTML 视图来调整相同的代码。

例如,如果我可以在 NewRelic 中看到我网站 90% 的时间都花在了对 /search_for_book?title= 的 ajax 调用上,那么我的代码可能如下所示:

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)

于 2013-08-07T12:36:34.207 回答
4

Ddt 将自己插入响应中,这意味着没有标准的方式来浏览其面板以获取 AJAX 请求。此外,AJAX 响应可以是 JSON 格式,这使得 ddt 无法插入其中。

就个人而言,我会找到一种将 ddt 输出记录到文本文件的方法,或者它可能支持客户端-服务器架构,其中客户端在 AJAX 请求处理程序中工作并将数据发送到服务器?我不知道有什么可能,因为那里有十几个 ddt 克隆。

于 2011-02-26T12:11:44.630 回答