Pyramid Documentation / Документация Pyramid: narr/firstapp.rst

← →
Английский оригинал Перевод на русский

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

Ваше первое приложение :app:Pyramid
===============================

uhbif19 21.07.11 в 08:45

0

В этой главе мы сделаем небольшое приложение :app:Pyramid. После этого мы детально обсудим его работу.

uhbif19 21.07.11 в 08:46

0

Hello World, Goodbye World
--------------------------

uhbif19 21.07.11 в 08:47

0

Вот совсем простое приложение :app:Pyramid, сконфигурированное императивно.

uhbif19 21.07.11 в 08:47

0

Если назвать этот скрипт helloworld.py и запустить его в интерпретаторе Python, то на порту 8080 запуститься веб-сервер :

uhbif19 21.07.11 в 08:50

0

Если зайти на корневую страничку (/), нашего сервера localhost:8080, мы увидим надпись "Hello world !". Если же зайти на страничку /goodbye, мы увидим надпись "Goodbye world !".

uhbif19 21.07.11 в 08:54

0

Нажатие Ctrl-C закроет программу.

uhbif19 21.07.11 в 08:54

0

А теперь рассмотрим в деталях, что делает это приложение.

uhbif19 21.07.11 в 08:55

0

Импорты
~~~~~~~

uhbif19 21.07.11 в 08:55

0

Скрипт helloworld.py импортирует следующее :

uhbif19 21.07.11 в 08:57

0

Он импортирует :class:~pyramid.config.Configurator из модуля :mod:pyramid.config. Экземпляр этого класса, будет использован для конфигурации вашего приложения.

uhbif19 21.07.11 в 08:58

0

Класс :class:pyramid.response.Response будет использован при создании объекта :term:response.

uhbif19 21.07.11 в 09:00

0

Как многие другие веб-фреймворки, :app:Pyramid использует протокол :term:WSGI для взаимодействия в веб сервером. Сервер :mod:paste.httpserver - это удобный пример WSGI сервера.

uhbif19 21.07.11 в 09:04

0

Обьявления View Callable
~~~~~~~~~~~~~~~~~~~

uhbif19 21.07.11 в 09:05

0

Определения видов-для-вызова
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rnd0011 10.06.12 в 18:50

0

В скрипте, кроме импортированния, были определенны две функции hello_world и goodbye_world.

uhbif19 21.07.11 в 09:06

0

Они не делают ничего сложного. Обе принимают один аргумент. Эти функции не выполняют никаких действий, но возвращают экземпляр :class:Response, со значениями "Hello world!" для функции hello_world и "Goodbye world!" для goodbye_world.

uhbif19 21.07.11 в 09:10

0

Такие функции называются :term:view callable. View callable обрабатывает один аргумент request. Она должна возвращать ответ :term:response. View callable не обязана быть функцией. Она может быть другой сущностью, например классом, но мы пока будем говорить только о функциях.

uhbif19 21.07.11 в 09:13

0

Объект :term:request (от которого вызывается view callable), это форма представления HTTP запроса полученного :app:Pyramid с помощью активного WSGI сервера.

uhbif19 21.07.11 в 09:15

0

View callable возвращает обьект :term:response, из которого строится ответ HTTP; этот объект будет преобразован в обыкновенный текст активным WSGI сервером и отослан в HTTP ответе, браузеру пользователя.

Каждый view callable создает объект :class:~pyramid.response.Response и возвращает его как свой ответ.

Функция hello_world добавляет строку "Hello world!" в конструктор Response.

uhbif19 21.07.11 в 09:19

0

.. note:: Как мы увидим в следующих главах, возвращение Response обьекта не обязательно; вместо этого можно настроить использование :term:renderer. Если мы используем :term:renderer, то view callable может возвращать любое значение, воспринимаемое его рендером. А уже рендер преобразует это значение в готовый Response обьект.

uhbif19 21.07.11 в 09:38

0

Конфигурация приложения
~~~~~~~~~~~~~~~~~

uhbif19 21.07.11 в 09:34

0

Следующий код определяет *конфигурацию* данного приложения. Оно конфигурируется, с использованием уже определенных и импортированных функций и классов.

uhbif19 21.07.11 в 09:41

0

Рассмотрим это по-поподробнее...

uhbif19 21.07.11 в 09:41

0

Рассмотрим это поподробнее...

rnd0011 10.06.12 в 17:17

0

Создание Конфигуратора
~~~~~~~~~~~~~~~~

uhbif19 21.07.11 в 09:42

0

Код if __name__ == '__main__': - это одна из идиом Python : код за ifбудет выполнен, только при запуске приложения напрямую из командной строки.

uhbif19 21.07.11 в 09:44

0

helloworld.pyможно рассматривать как модуль Python. Использование этой идиомы - хорошая идея; если этот модуль будет импортирован другим модулем Python, то код внутри if не будет выполнен.

uhbif19 21.07.11 в 09:47

0

Строка config = Configurator(), создает объект класса config = Configurator().

Полученный объект config дает API, нужный для конфигурации приложения .

uhbif19 21.07.11 в 09:50

0

Конфигурированние
~~~~~~~~~~~~~

uhbif19 21.07.11 в 09:50

0
Минутку...

Следующая страница →