04:更容易开发 debugtoolbar
¶
错误处理和使用 pyramid_debugtoolbar
附加。
背景¶
在介绍基础知识的同时,我们还想展示如何在开发和调试中提高生产力。例如,我们刚刚讨论了模板重新加载,之前我们展示了 --reload
用于重新加载应用程序。
pyramid_debugtoolbar
是一个流行的Pyramid加载项,它使您的浏览器中有几个工具可用。将它添加到项目中说明了配置的几个要点。
目标¶
安装并启用工具栏以在开发期间提供帮助。
解释Pyramid附加组件。
演示如何将附加组件配置到应用程序中。
步骤¶
首先,我们复制上一步的结果。
cd ..; cp -r ini debugtoolbar; cd debugtoolbar
添加
pyramid_debugtoolbar
对我们项目的依赖setup.py
作为一个 Setuptools “额外”开发:1from setuptools import setup 2 3# List of dependencies installed via `pip install -e .` 4# by virtue of the Setuptools `install_requires` value below. 5requires = [ 6 'pyramid', 7 'waitress', 8] 9 10# List of dependencies installed via `pip install -e ".[dev]"` 11# by virtue of the Setuptools `extras_require` value in the Python 12# dictionary below. 13dev_requires = [ 14 'pyramid_debugtoolbar', 15] 16 17setup( 18 name='tutorial', 19 install_requires=requires, 20 extras_require={ 21 'dev': dev_requires, 22 }, 23 entry_points={ 24 'paste.app_factory': [ 25 'main = tutorial:main' 26 ], 27 }, 28)
安装我们的项目及其新添加的依赖项。注意,我们使用了额外的说明符
[dev]
安装开发需求并用双引号将其和周期包围起来。$VENV/bin/pip install -e ".[dev]"
我们的
debugtoolbar/development.ini
获取的配置项pyramid.includes
:1[app:main] 2use = egg:tutorial 3pyramid.includes = 4 pyramid_debugtoolbar 5 6[server:main] 7use = egg:waitress#main 8listen = localhost:6543
运行wsgi应用程序时使用:
$VENV/bin/pserve development.ini --reload
在浏览器中打开http://localhost:6543/。请参见右侧的便利工具栏。
分析¶
pyramid_debugtoolbar
是一个完整的python包,在pypi上可用,就像其他数千个python包一样。因此,我们从安装 pyramid_debugtoolbar
使用普通的python包安装命令打包到我们的虚拟环境中。
这个 pyramid_debugtoolbar
python包也是一个Pyramid插件,这意味着我们需要将它的插件配置包含到我们的Web应用程序中。我们可以在 tutorial/__init__.py
通过使用 config.include
. Pyramid还支持通过我们的 development.ini
使用 pyramid.includes
. 我们使用它来加载debugtoolbar的配置。
现在,您将在浏览器的右侧看到一个吸引人的按钮,您可以单击该按钮在新的浏览器选项卡中对调试信息进行自省访问。更好的是,如果您的Web应用程序生成错误,您将在屏幕上看到一个很好的回溯。如果要禁用此工具栏,则无需更改代码:可以将其从 pyramid.includes
在相关 .ini
配置文件(从而显示为什么配置文件很方便)。
请注意,在关闭应用程序之前,工具栏会向应用程序中注入少量的HTML/CSS。 </body>
标记以显示自身。如果您开始体验到其他无法解释的客户端奇怪,您可以通过评论 pyramid_debugtoolbar
行在 pyramid.includes
暂时地。
最后,我们介绍了 Setuptools 额外的。在这种情况下,这些是可选的或推荐的功能,可以与“额外”说明符一起安装。 dev
. 说明符是Python字典中键的名称,当在命令行上调用时,说明符被方括号包围,例如,。键的值是依赖项的python列表。
参见
也见 pyramid_debugtoolbar .
额外credit¶
我们补充说
pyramid_debugtoolbar
到名单dev_requires
依赖关系debugtoolbar/setup.py
. 然后我们通过pip install -e ".[dev]"
通过设置工具extras_require
python字典中的值。为什么我们把它们放在那里而不是放在requires
名单?在应用程序中引入一个bug。变化:
def hello_world(request): return Response('<body><h1>Hello World!</h1></body>')
到:
def hello_world(request): return xResponse('<body><h1>Hello World!</h1></body>')
保存,然后再次访问http://localhost:6543/。注意漂亮的回溯显示。在最下面一行,单击右侧的“屏幕”图标,然后尝试键入变量名。
request
和Response
. 你还能发现什么?