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

    Часть 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:
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 2

    • НЛО прилетело и опубликовало эту надпись здесь
        0
        Думал.

        Сначала переводил и писал сюда, потом решил перенести это в личный блог.
        В какое-то время блог умер ( а точнее «умерла» БД MySQL ) — восстанавливать не сильно-то и хотелось,
        поэтому опубликовал здесь то, что осталось. Возможно, в обозримом будущем, опубликую как раз ссылку на такой ресурс.

        А пока это выложено из расчета — авось кому-нибудь пригодится.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое