- Python Pyramid教程
- Python Pyramid - 主页
- Python Pyramid - 概述
- Pyramid - 环境设置
- Python Pyramid - Hello World
- Pyramid - 应用程序配置
- Python Pyramid - URL 路由
- Python Pyramid - 查看配置
- Python Pyramid - 路由前缀
- Python Pyramid - 模板
- Pyramid - HTML 表单模板
- Python Pyramid - 静态资源
- Python Pyramid - 请求对象
- Python Pyramid - 响应对象
- Python Pyramid - 会话
- Python Pyramid - 事件
- Python Pyramid - 消息闪烁
- Pyramid - 使用 SQLAlchemy
- Python Pyramid - Cookiecutter
- Python Pyramid - 创建项目
- Python Pyramid - 项目结构
- Python Pyramid - 包结构
- 手动创建项目
- 命令行Pyramid
- Python Pyramid - 测试
- Python Pyramid - 日志记录
- Python Pyramid - 安全
- Python Pyramid - 部署
- Python Pyramid有用资源
- Python Pyramid - 快速指南
- Python Pyramid - 有用的资源
- Python Pyramid - 讨论
Python Pyramid - 项目结构
如前所述,外部 testproj 文件夹包含 testproj 和测试包。此外,它还有其他用于描述、运行和测试应用程序的文件。这些文件是 -
MANIFEST.in包含要包含在包的源发行版中的文件列表。
development.ini是一个 PasteDeploy 配置文件,可用于在开发期间执行应用程序。
Production.ini是一个 PasteDeploy 配置文件,可用于在生产配置中执行应用程序。
pytest.ini是用于运行测试的配置文件。
setup.py是用于测试和分发应用程序的标准Setuptools setup.py 文件。
test.ini是用于执行应用程序测试的配置文件。
“.ini”文件是 Cookiecutter 实用程序用来生成 Pyramid 应用程序结构的配置。这些文件使用名为 PasteDeploy 的系统,该系统由 Ian Bicking 开发。该库与 Pyramid 一起自动安装。
尽管可以在没有 PasteDeploy 支持的情况下开发 Pyramid 应用程序,但它提供了启动、调试和测试应用程序的标准化方法。
预定义的设置是从配置文件(扩展名为 .ini)中读取的。这些文件主要包含应用程序配置设置、服务器设置和日志记录设置。
开发.ini
如前所述,使用 Cookiecutter 构建的 Pyramid 应用程序由以下命令调用 -
pserve development.ini
development.ini 包含应用程序的 PasteDeploy 配置规范。该文件中的配置规范包含各个部分,例如 [app:main]、[server:main]、[loggers] 等。
最重要的部分 id [app:main]。它指定应用程序的起点。
[app:main] use = egg:testproj pyramid.reload_templates = true pyramid.debug_authorization = false pyramid.debug_notfound = false pyramid.debug_routematch = false pyramid.default_locale_name = en pyramid.includes = pyramid_debugtoolbar sqlalchemy.url = sqlite:///%(here)s/testproj.sqlite retry.attempts = 3
第一个条目“use = Egg:testproj”表示 Pyramid WSGI 应用程序对象 main 的名称。它在textproj 包的__init__.py文件中声明(在 testproj 项目文件夹内)。本节包含其他启动时间配置设置。
例如,“pyramid.includes”设置指定要包含在运行时中的包。在上面的示例中,包含了debugtoolbar包,以便单击 Pyramid 徽标时激活调试面板。我们在前面的部分已经看到了它的功能。
我们还看到,该应用程序中要使用的数据库的 URL 也已指定。
[server:main] 部分指定侦听 TCP 端口 6543 的 WSGI 服务器的配置。它被配置为仅侦听 localhost (127.0.0.1)。
[server:main] use = egg:waitress#main listen = localhost:6543
其他各种与日志记录相关的部分都使用 Python 的日志记录库。这些“.ini”文件部分被传递到日志记录模块的配置文件配置引擎。
生产.ini
当应用程序在生产模式下部署时,此文件用于为应用程序提供服务,而不是“development.ini”。这两个文件是相似的。但是,在“product.ini”中,调试工具栏被禁用,重新加载选项被禁用并关闭调试选项。
这是典型的“product.ini”文件的精简版本 -
[app:main] use = egg:testproj pyramid.reload_templates = false pyramid.debug_authorization = false pyramid.debug_notfound = false pyramid.debug_routematch = false pyramid.default_locale_name = en sqlalchemy.url = sqlite:///%(here)s/testproj.sqlite retry.attempts = 3 [pshell] setup = testproj.pshell.setup [alembic] script_location = testproj/alembic file_template = %%(year)d%%(month).2d%%(day).2d_%%(rev)s [server:main] use = egg:waitress#main listen = *:6543 [loggers] keys = root, testproj, sqlalchemy, alembic [handlers] keys = console [formatters] keys = generic [logger_root] level = WARN handlers = console [logger_testproj] level = WARN handlers = qualname = testproj [logger_sqlalchemy] level = WARN handlers = qualname = sqlalchemy.engine [logger_alembic] level = WARN handlers = qualname = alembic [handler_console] class = StreamHandler args = (sys.stderr,) level = NOTSET formatter = generic [formatter_generic] format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s