04:更容易开发 debugtoolbar

错误处理和使用 pyramid_debugtoolbar 附加。

背景

在介绍基础知识的同时,我们还想展示如何在开发和调试中提高生产力。例如,我们刚刚讨论了模板重新加载,之前我们展示了 --reload 用于重新加载应用程序。

pyramid_debugtoolbar 是一个流行的Pyramid加载项,它使您的浏览器中有几个工具可用。将它添加到项目中说明了配置的几个要点。

目标

  • 安装并启用工具栏以在开发期间提供帮助。

  • 解释Pyramid附加组件。

  • 演示如何将附加组件配置到应用程序中。

步骤

  1. 首先,我们复制上一步的结果。

    cd ..; cp -r ini debugtoolbar; cd debugtoolbar
    
  2. 添加 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)
    
  3. 安装我们的项目及其新添加的依赖项。注意,我们使用了额外的说明符 [dev] 安装开发需求并用双引号将其和周期包围起来。

    $VENV/bin/pip install -e ".[dev]"
    
  4. 我们的 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
    
  5. 运行wsgi应用程序时使用:

    $VENV/bin/pserve development.ini --reload
    
  6. 在浏览器中打开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

  1. 我们补充说 pyramid_debugtoolbar 到名单 dev_requires 依赖关系 debugtoolbar/setup.py . 然后我们通过 pip install -e ".[dev]" 通过设置工具 extras_require python字典中的值。为什么我们把它们放在那里而不是放在 requires 名单?

  2. 在应用程序中引入一个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/。注意漂亮的回溯显示。在最下面一行,单击右侧的“屏幕”图标,然后尝试键入变量名。 requestResponse . 你还能发现什么?