我很好奇是否有一种合理的方法可以将(惊人的)django-debug-toolbar 与 AJAX 查询一起使用。
例如,我使用带有一堆参数的 jQuery $.get 来访问 Django URL 并内联加载它。如果我有一个错误,它没有在工具栏上注册。我也不能通过复制 AJAX URL 来使用它,因为 DDT 附加到响应的正文标记,并且在 AJAX 响应中包含正文标记没有任何意义。
任何方向都会有所帮助!谢谢!
我很好奇是否有一种合理的方法可以将(惊人的)django-debug-toolbar 与 AJAX 查询一起使用。
例如,我使用带有一堆参数的 jQuery $.get 来访问 Django URL 并内联加载它。如果我有一个错误,它没有在工具栏上注册。我也不能通过复制 AJAX URL 来使用它,因为 DDT 附加到响应的正文标记,并且在 AJAX 响应中包含正文标记没有任何意义。
任何方向都会有所帮助!谢谢!
在本次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',
]
我以前也有同样的问题!随着我做越来越多的 AJAX 繁重的应用程序,我发布了一个Django 应用程序和一个Chrome 扩展程序,它们一起解决了这个问题。
所有信息都在 github 存储库中。
我最近遇到了这个问题。我的快速-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 克隆。