如何在AJAX调用中使用django-debug-toolbar?
我很好奇有没有什么好的方法可以让(非常棒的)django-debug-toolbar和AJAX查询一起使用。
举个例子,我用jQuery的$.get方法,带着一堆参数去请求一个Django的URL,然后把结果加载到页面里。如果这个请求出错了,错误信息不会在工具栏上显示。我也不能通过复制AJAX的URL来使用这个工具,因为DDT是附加在响应的body标签上的,而在AJAX响应中包含body标签是没有意义的。
任何建议都会很有帮助!谢谢!
4 个回答
7
我最近遇到了这个问题。我的快速解决办法就是添加一些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调用它,对诊断它的效率问题并没有影响(至少对我来说是这样,你的情况可能不同)。
35
更新:这个功能现在已经内置在django-debug-toolbar中了
这个功能是在这个PR中添加的,并在3.0版本中发布。
旧的答案对于旧版本的工具栏可能仍然有用:
我写了一个Django Debug Toolbar请求历史面板,可以添加到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',
]