[英]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存储库中。
它是在这个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.