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

问题描述:

我很好奇,如果有合理的方式来使用AJAX查询(令人惊叹的)Django的调试工具栏。如何在AJAX调用中使用django-debug-toolbar?

例如,我用一个jQuery $不用彷徨与一堆参数打一个Django的URL和内嵌加载它。如果我有这个错误,它没有注册在工具栏上。我也不能通过复制AJAX URL来使用它,因为DDT附加到响应的主体标签,并且将AJAX响应包含在body标签中没有任何意义。

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

我以前有同样的问题! 而当我做越来越多的AJAX重量级应用时,我发布了一个Django Application和一个Chrome extension,它们一起解决了这个问题。

所有的信息是在GitHub的仓库。

+1

不确定为什么,但Chrome扩展似乎无法显示Ajax调用的调试信息(jQuery。get,jQuery.getJson,...) – 2013-11-19 16:31:13

+0

@PetrPeller是否安装了最新的django-debug-panel软件包?点击劫持保护激活时,以前的版本有问题。如果它仍然无法正常工作,可以请您在github上提供更多信息(Django版本,代码示例等) – recamshak 2013-11-20 00:02:07

+0

使用'pip install django-debug-panel'安装...我会尝试调查更多,并让你知道GitHub – 2013-11-20 00:07:39

滴滴涕插头本身到响应,这意味着有浏览其面板为AJAX请求的的标准方法。此外,AJAX响应可以是JSON格式,这使得ddt无法插入它。

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

+0

真实的,但大多数分析器和调试器使用的头从服务器发送数据到客户端(同时仍保留一个可能的JSON响应)和浏览器扩展,以显示它。已经过了3年,因为您的答案和DDT仍然没有此功能:) – 2014-06-17 14:45:06

我最近遇到这个问题。我的快速而肮脏,但工作的解决方案只是添加一些HTML视图来弯曲相同的代码。 ?

因此,举例来说,如果我能在NewRelic的看到,90%的我的网站的时间在一个AJAX调用/ search_for_book标题是花=,我的代码可能是这样的:

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) 

瓶颈将会在代码中的某个地方;我们是否通过Ajax调用它无关诊断其效率低下(在我的情况,至少,因人而异)

我写的可以添加到Django的调试工具栏来查看比当前(包括AJAX请求)等请求Request History Panel for Django Debug Toolbar


通过PIP安装:

pip install git+https://github.com/djsutho/django-debug-toolbar-request-history.git 


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请求覆盖DEBUG_TOOLBAR_CONFIGSHOW_TOOLBAR_CALLBACK(也在settings.py),例如:

DEBUG_TOOLBAR_CONFIG = { 
    'SHOW_TOOLBAR_CALLBACK': 'ddt_request_history.panels.request_history.allow_ajax', 
}