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

我很好奇,如果有一个合理的方式来使用AJAX查询(令人惊叹的)Django的debugging工具栏。

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

任何方向将是有益的! 谢谢!

我以前也有同样的问题! 而当我做越来越多的AJAX沉重的应用程序时,我发布了一个Django应用程序和一个Chrome扩展 ,一起解决了这个问题。

所有的信息都在github仓库中。

我为Djangodebugging工具栏编写了Request History面板 ,可以将它添加到Djangodebugging工具栏中,查看当前请求以外的请求(包括AJAX请求)。

通过点安装:

 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', ] 

要loggingajax请求覆盖SHOW_TOOLBAR_CALLBACK中的DEBUG_TOOLBAR_CONFIG (也在settings.py中 )例如:

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

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

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

我最近遇到了这个问题。 我快速的,肮脏,但工作的解决scheme只是添加一些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来调用它与诊断它的低效率无关(在我的情况下,至less; YMMV)