繁体   English   中英

如何在 AJAX 调用中使用 django-debug-toolbar?

[英]How to use django-debug-toolbar on AJAX calls?

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

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

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

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

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

更新:此功能现已内置到 django-debug-toolbar 中

它是在这个PR中添加的,并在 3.0 版中发布


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

为 Django 调试工具栏编写了请求历史面板,可以将其添加到 Django 调试工具栏以查看当前请求以外的请求(包括 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',
]

我最近遇到了这个问题。 我的快速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)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM