Часть 1 — предисловие и содержание.
Сценарий
Pyramid превосходен в построении веб-приложений несколькими способами. Также как и Pylons, до его появления, Pyramid может строить традиционные маршрут-ориентированные(routes-oriented) RDBMS приложения, используя SQLAlchemy. В отличии от других, основанных на RDBMS, веб-фреймворков, Pyramid к тому же очень хорошо оснащен, чтобы легко строить контент-ориентированные приложения, знакомые из мира Plone и Zope.
Поскольку это пособие для Plone конференции, мы выбрали сценарий представления, который показывает сильные стороны Pyramid в контент-ориентированных приложениях. Если точнее — иерархическая система управления проектами, где вы можете ставить задачи командам.
По ходу изучения этого пособия, мы будем создавать приложение под названием Projector.
Как устанавливать
В этом пособии предполагается, что у вас уже установлен Python 2.6 и выше, у вас есть соединение с интернетом, и текстовый редактор по вашим предпочтениям. Этого достаточно, чтобы вы начали с первого шага. Другие шаги могут потребовать установки дополнительных пакетов.
Примечание по тексту: Windows-пользователям нужно адаптировать UNIX-измы, чтобы это соответствовало вашему рабочему окружению.
Наше рабочее пространство будет выглядеть таким образом:
someworkingdirectory/
tutorial_workspace/
venv ### Target for our virtualenv
creatingux/
step01
step02
etc.
resources
step01
step02
etc.
etc.
Шаги
Открываем shell и заходим в нем в рабочую директорию
- $ mkdir tutorial_workspace; cd tutorial_workspace
- $ virtualenv --no-site-packages venv
- $ export PATH=/путь/до/tutorial_workspace/venv/bin:$PATH
- $ which easy_install
должно вывести что-то вроде:
/home/ks/projects/tutorial_workspace/venv/bin/easy_install
- $ easy_install pyramid WebTest nose
- $ export PYRAMID_RELOAD_TEMPLATES=1
Примеры кода
Каждый шаг в этом руководстве требует от читателя ввода примеров кода и создания таким образом рабочего приложения. Директории в этих шагах не являются Python-пакетами, но как бы там ни было, простая директория полна Python-модулей. К тому же они, полностью работающие, в отдельных примерах планомерно вырастают в целое приложение.
Файлы примера доступны для тех, кто не хочет вводить код, как часть учебного процесса.(прим.перев.на той странице их нет)
Создание простого UX для Pyramid
В этой серии шагов мы построим сущность пользовательского опыта(UX), с заменителями для логики и данных.
Цели
- Простейшая из возможных демонстрация Pyramid
- Использование unit-тестов и WebTest, для ускорения разработки
- Шаблонизация с Chameleon и ZPT
- Использование макросов и “схем”(layouts), для продуктивности работы шаблонов
- Статические ресурсы
- AJAX через JSON рендерер(renderer)
Рабочий поток
У многих проектов есть неизменный рабочий поток, который начинается с клиента, кто обычно хочет увидеть что-то, чтобы понять и утвердить. Обычно «UI персона» в команде работает на данном этапе, получая рабочий прототип на месте, и тогда логика считается заполненной.
Это пособие моделирует такой рабочий процесс. В этой первой части мы покажем, как человек, без глубоких знаний Pyramid архитектуры, может создавать работающие прототипы различных видов, в Projector'е.
Шаг 01: Hello World в Pyramid
Какой простейший путь начать в Pyramid? Отдельный-файл модуль. Без пакетов, импортов, setup.py и другого подобного.
Цели
- Получить Pyramid пиксели на экране так просто, насколько возможно
- Использовать это как хорошо-понимаемую базу, для дальнейшего усложнения
Технические требования
- Создать модуль с видом(view), чтобы он действовал как HTTP-сервер
- Посетить URL в своем браузере
Предпосылки
Микрофреймворки это всеобщее увлечение этих дней. Они дают низкую загрузку при выполнении. И также они не грузят
Pyramid особенный потому что он может действовать как отдельный файл-микрофреймворк. У вас есть простой Python файл который может быть исполнен напрямую через Python. Но Pyramid также масштабируется до громадных приложений.
Шаги
Убедитесь, что вы сделали все, как сказано здесь.
И поехали дальше:
$ mkdir creatingux; cd creatingux
$ mkdir step01; cd step01
Копируем текст ниже во вновь создаваемый файл step01/application.py:
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response# This acts as the view function
def hello_world(request):
return Response('hello!')def main():
# Grab the config, add a view, and make a WSGI app
config = Configurator()
config.add_view(hello_world)
app = config.make_wsgi_app()
return appif __name__ == '__main__':
# When run from command line, launch a WSGI server and app
app = main()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()
$ python application.py
Открываем 127.0.0.1:8080
в браузере, смотрим, радуемся.
Дополнительные вопросы
- Что случится, если если вы вернете строку of HTML? Последовательность of integers?
- Поставьте что-нибудь неправильное, такое как print xyz, в view функцию. Убейте ваше python приложение и перезапустите, потом обновите браузер. Какое исключение в консоли?
- Поддерживает ли Pyramid автоматическое обновление Python кода?
Анализ
Этот простой модуль делает совсем немного, для нескольких строк кода, таким образом создание веб-приложения по духу схоже с микрофреймворками. Функция представления добавлена к конфигурации. При вызове, представление возвращает ответ.
Пояснения
Предпосылки к мегафреймворкам, микрофреймворкам и Pyramid основаны на этом.
Автор: ks_ks