Python Pyramid 创建一个项目
假设一个Pyramid虚拟环境已经建立并运行,并且Cookiecutter已经安装在其中。创建Cookiecutter项目的最简单的方法是使用一个预先建立的启动模板,按照下面的命令 —
cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout 2.0-branch
模板被下载后,用户被要求选择项目的名称。
project_name [Pyramid Scaffold]: testproj
repo_name [testproj]:
然后选择模板语言。
选择 template_language –
1 - jinja2
2 - chameleon
3 - mako
Choose from 1, 2, 3 [1]: 1
由于我们对jinja2很熟悉,所以给1作为选择。接下来,使用SQLALchemy作为后端。
Select backend:
1 - none
2 - sqlalchemy
3 - zodb
Choose from 1, 2, 3 [1]: 2
在 testproj 文件夹内,创建了以下文件结构
│ development.ini
│ MANIFEST.in
│ production.ini
│ pytest.ini
│ README.txt
│ setup.py
│ testing.ini
│
├───testproj
│ │ pshell.py
│ │ routes.py
│ │ __init__.py
│ │
│ ├───alembic
│ │ │ env.py
│ │ │ script.py.mako
│ │ │
│ │ └───versions
│ │ README.txt
│ │
│ ├───models
│ │ meta.py
│ │ mymodel.py
│ │ __init__.py
│ │
│ ├───scripts
│ │ initialize_db.py
│ │ __init__.py
│ │
│ ├───static
│ │ pyramid-16x16.png
│ │ pyramid.png
│ │ theme.css
│ │
│ ├───templates
│ │ 404.jinja2
│ │ layout.jinja2
│ │ mytemplate.jinja2
│ │
│ └───views
│ default.py
│ notfound.py
│ __init__.py
│
└───tests
conftest.py
test_functional.py
test_views.py
__init__.py
外部 testproj 文件夹有一个内部 testproj 包的子文件夹和测试包。内部 testproj 子文件夹是一个有模型和脚本、子包、静态以及模板文件夹的包。
接下来,使用Alembic初始化和升级数据库。
# Generate your first revision.
alembic -c development.ini revision --autogenerate -m "init"
# Upgrade to that revision.
alembic -c development.ini upgrade head
Alembic是一个轻量级的数据库迁移工具,与SQLAlchemy数据库工具包(Python)一起使用。现在外部项目文件夹将显示一个 testproj.sqlite 数据库。
development.ini文件为数据库提供了一个默认的数据。用下面的命令来填充数据库。
initialize_testproj_db development.ini
Cookiecutter工具也在测试包中生成了测试套件。它们是基于 PyTest 包的。继续,看看测试是否通过。
Pytest
================ test session starts ======================
platform win32 -- Python 3.10.1, pytest-7.1.2, pluggy-1.0.0
rootdir: F:\pyram-env\testproj, configfile: pytest.ini, testpaths: testproj, tests
plugins: cov-3.0.0
collected 5 items
tests\test_functional.py .. [ 40%]
tests\test_views.py ... [100%]
=============== 5 passed, 20 warnings in 6.66s ===============
Cookiecutter使用Waitress服务器。Pyramid应用程序通过以下命令在localhost的6543端口提供服务:
pserve development.ini
Starting server in PID 67700.
2022-06-19 23:43:51,308 INFO [waitress:485][MainThread] Serving on http://[::1]:6543
2022-06-19 23:43:51,308 INFO [waitress:485][MainThread] Serving on http://127.0.0.1:6543
打开浏览器并在其中访问 http://localhost:6543/ 。The homepage of the newly created project will be displayed as follows −
调试工具条
你可以在主页的右上方找到一个较小的Pyramid标志。点击它可以打开一个新的标签和一个调试工具栏,提供很多关于项目的有用信息。
例如,历史标题下的SQLAlchemy标签显示了SQLAlchemy查询,显示了从 development.ini 中默认数据创建的模型结构 。
全局标题又显示了诸如自省、路由等标签,如下图所示。点击 “Routes “标签,可以看到应用程序配置中定义的路由和它们的匹配模式。