Руководство: Pyramid для Людей — часть 2

в 6:58, , рубрики: pyramid, python, tutorial for humans, перевод pyramid доки, метки: , ,

Часть 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 app

if __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 основаны на этом.

Часть 3:

Автор: ks_ks

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js