Домой Edit me on GitHub

2017-09-19

Структура приложения

Хотя не составляет большой трудности написать Pyramid-приложение (проект) с нуля, Pyramid имеет инструменты для инициализации кода нового приложения по выбранному шаблону, или, в терминологии Pyramid, каркасной структуре (scaffolds). Например, в поставке имеются каркасные структуры для проектов, использующих ZODB или SQLAlchemy.

Проект — это каталог, содержащий по крайней мере один пакет на Python.

Типичная структура каталога для небольшого проекта:

MyProject/
|-- CHANGES.txt
|-- development.ini
|-- MANIFEST.in
|-- myproject
|   |-- __init__.py
|   |-- static
|   |   |-- favicon.ico
|   |   |-- logo.png
|   |   `-- pylons.css
|   |-- templates
|   |   `-- mytemplate.pt
|   |-- tests.py
|   `-- views.py
|-- production.ini
|-- README.txt
|-- setup.cfg
`-- setup.py

Приведённую структуру, как следует из документации, не следует сильно изменять, так как это может помешать другим разработчикам быстро ориентироваться в коде проекта. Тем не менее, растущий проект может потребовать некоторых изменений. Например, виды, модели (если они используются) и тесты можно, разбив на модули, перенести соответственно в подкаталоги views, models и tests (не забыв снабдить их файлом __init__.py).

Следует отметить, что Pyramid может работать с любым WSGI-сервером. Проекты, созданные по готовым каркасным структурам, используют сервер Waitress.

Стандартные шаблоны проектов

Список шаблонов можно посмотреть по команде:

$ pcreate -l
Available scaffolds:
  alchemy:  Pyramid SQLAlchemy project using url dispatch
  starter:  Pyramid starter project
  zodb:     Pyramid ZODB project using traversal
starter
URL маршруты URL dispatch, без БД.
zodb
URL маршрутизация traversal и БД ZODB.
alchemy
URL маршрутизация URL dispatch и БД SQLite с использованием SQLAlchemy.

Некоторые пакеты могут дополнять этот список, например Cornice и pyramid_jinja2.

$ pcreate -l
Available scaffolds:
  alchemy:                 Pyramid SQLAlchemy project using url dispatch
  cornice:                 A Cornice application
  pyramid_jinja2_starter:  pyramid jinja2 starter project
  starter:                 Pyramid starter project
  zodb:                    Pyramid ZODB project using traversal

Создание проекта

$ pcreate -s starter MyProject
MyProject
├── CHANGES.txt
├── development.ini
├── MANIFEST.in
├── myproject
│   ├── __init__.py
│   ├── static
│   │   ├── pyramid-16x16.png
│   │   ├── pyramid.png
│   │   ├── theme.css
│   │   └── theme.min.css
│   ├── templates
│   │   └── mytemplate.pt
│   ├── tests.py
│   └── views.py
├── production.ini
├── README.txt
└── setup.py

3 directories, 14 files

Установка

$ cd MyProject
$ python setup.py develop

Запуск

Часть настоек проекта, которые часто меняются, находится в файле development.ini.

$ pserve development.ini
Starting server in PID 16601.
serving on http://0.0.0.0:6543

Ниже показан пример настроек сервера. Сервер Waitress запустит MyProject.main по адресу 127.0.0.1 и порту 6543.

Код 100 Пример настроек сервера из development.ini
[server:main]
use = egg:waitress#main
host = 127.0.0.1
port = 6543

Для автоматического перезапуска сервера после изменения файлов нужно указать флаг --reload.

$ pserve development.ini --reload
Starting subprocess with file monitor
Starting server in PID 16601.
serving on http://0.0.0.0:6543

Теперь, после изменения какого-либо из файлов .py или .ini, сервер перезапустится автоматически.

development.ini changed; reloading...
-------------------- Restarting --------------------
Starting server in PID 16602.
serving on http://0.0.0.0:6543

Просмотр

После запуска приложения через pserve, можно открыть страницу http://localhost:6543/ в браузере.

../../../_images/project.png

Debug Toolbar

../../../_images/project-debug.png
1
2
3
[app:main]
pyramid.includes =
    pyramid_debugtoolbar
Previous: Конфигурация Next: Настройки