- 引言
- 本书涉及的内容
- 第 1 部分 Python 开发入门
- 第 1 章 Python 入门
- 第 2 章 开发 Web 应用
- 第 3 章 Python 项目的结构与包的创建
- 第 4 章 面向团队开发的工具
- 第 5 章 项目管理与审查
- 第 6 章 用 Mercurial 管理源码
- 第 7 章 完备文档的基础
- 第 8 章 模块分割设计与单元测试
- 第 9 章 Python 封装及其运用
- 第 10 章 用 Jenkins 持续集成
- 第 11 章 环境搭建与部署的自动化
- 第 12 章 应用的性能改善
- 第 13 章 让测试为我们服务
- 第 14 章 轻松使用 Django
- 第 15 章 方便好用的 Python 模块
- 附录 A VirtualBox 的设置
- 附录 B OS(Ubuntu)的设置
14.4 Django Debug Toolbar
接下来了解一下在用 Django 开发应用的过程中辅助调试的 Django Debug Toolbar。
Django Debug Toolbar 的简介
用 Django 进行开发时,各位是否想过“显示某个页面的过程中总共发送了哪些 SQL”呢?其实只要使用 Django Debug Toolbar4 ,我们就可以在开发 Web 页面的同时查看“发送了哪些 SQL”“处理花费了多少时间”等信息了。
4 https://github.com/django-debug-toolbar/django-debug-toolbar
除了 SQL 之外,使用 Django Debug Toolbar 还可以查看许多在开发过程中想要查看的信息。下面是除 SQL 之外可以查看的项目。
Versions | Django 的版本 |
Time | 显示视图所用的时间 |
Settings | settings.py 中描述的设置值 |
Headers | HTTP 请求 / 响应的头信息 |
Request | GET/POST/Cookie/Session 的变量信息 |
StaticFiles | 静态文件的相关信息 |
Templates | 模板的相关信息 |
Cache | 缓存框架的访问信息 |
Signals | Django 的内置 signal 信息 |
Logging | 被记录的日志信息 |
这里我们来了解一下几个可查看的信息。另外,本书使用了 Django Debug Toolbar 的 1.2.2 版本。现在来看看它的具体使用方法,先从安装开始。
◉ 安装
$ pip install django-debug-toolbar
安装完成之后在 settings.py 中添加如 LIST 14.35 所示的内容。
LIST 14.35 INSTALLED_APPS 内添加的内容
INSTALLED_APPS = ( . . 'django.contrib.staticfiles' # 在'debug_toolbar' 之前设置 . . 'debug_toolbar' # <- 添加 )
这里的 'django.contrib.staticfiles' 要设置在 'debug_toolbar' 之前。另外,Django 1.7 默认设置了 'django.contrib.staticfiles' 。
◉ 查看 Debug Toolbar
设置完 settings.py 之后重启 Django,随后浏览器上将显示图 14.4 所示的调试用工具栏。
图 14.4 Debug Toolbar
不需要显示 Debug Toolbar 时,点击右上角的 Hide 即可隐藏工具栏。
◉ SQL
如图 14.5 所示,我们能够查看当前视图内发送的 SQL 语句。除此之外还有 SQL 的 Explain 的执行结果以及发送 SQL 前的 Stacktrace 等信息。
图 14.5 SQL
◉ Versions
Versions 会显示当前视图使用的模块的版本信息(图 14.6)。
图 14.6 Versions
◉ 时间
如图 14.7 所示,“时间”能查看显示当前视图所消耗的时间。我们来简单看一下其中的主要项目。
· User CPU time:从接到请求到渲染完页面的时间
· System CPU time:从渲染完毕到服务器生成 HTTP 响应并返回给客户端所用的时间
· Total CPU time:User CPU time + System CPU time 的总和,即从接到请求到返回响应所用的时间
图 14.7 时间
◉ Settings
Settings 可以列表查看 Django 的 settings.py 内设置的值(常量)。这里能查看的只有常量,因此不会显示 settings.py 中定义的函数等内容(图 14.8)。
图 14.8 Settings
◉ Headers
Headers 里可以查看 HTTP 请求 / 响应的头信息(图 14.9)。
图 14.9 Headers
◉ Request
Request 可以查看 HTTP 请求发送的 GET/POST/Cookie 的内容、Session 的内容,以及被调用的视图的信息(图 14.10)。
图 14.10 Request
◉ Static files
Static files 可以查看通过 django.contrib.staticfiles 获取的静态文件列表,以及 staticfiles 获取文件时的对象目录列表(图 14.11)。
图 14.11 StaticFiles
◉ Templates
Templates 里可以查看当前视图使用的模板(包含继承关系)以及传给模板的 Context、Context processor 的列表(图 14.12)。
图 14.12 Templates
◉ Cache
Cache 可以查看当前视图使用的缓存后端的列表(图 14.13)。
图 14.13 Cache
◉ Logging
假设 polls 应用的视图中输出了如 LIST 14.36 所示的调试日志,那么浏览器上就会显示如图 14.14 所示的日志。
LIST 14.36 Logging 的设置示例
import logging logger = logging.getLogger(__name__) # __name__ 处代入模块路径'polls.views' def detail(request, poll_id): poll = get_object_or_404(Poll, id=poll_id) logger.info('Poll: %s', poll.id) return TemplateResponse(request, 'polls/detail.html', {'poll': poll})
![]() |
图 14.14 Logging
◉ Intercept redirects
勾选工具栏下方的“Intercept redirects”选项,网页的重定向将被拦截。这项功能可以帮助我们确认重定向的时间点、查看返回重定向响应的视图内都执行了哪些处理。
图 14.15 Intercept redirects
◉ 自定义显示
工具栏的显示可以根据开发应用的情况与阶段进行自定义。自定义的方法很简单,只要在 settings.py 中添加 DEBUG_TOOLBAR_PANELS 项,按照自己的需要对其中内容进行重排或改为注释,即可修改工具栏的显示项目(LIST 14.37)。
LIST 14.37 DEBUG_TOOLBAR_PANELS 的设置
DEBUG_TOOLBAR_PANELS = [ '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.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel', ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论