Pyramid Documentation / Документация Pyramid: narr/firstapp.rst
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
||
|
Ваше первое приложение :app:Pyramid uhbif19 21.07.11 в 08:45 |
||
|
В этой главе мы сделаем небольшое приложение :app:Pyramid. После этого мы детально обсудим его работу. uhbif19 21.07.11 в 08:46 |
||
|
Hello World, Goodbye World uhbif19 21.07.11 в 08:47 |
||
|
Вот совсем простое приложение :app:Pyramid, сконфигурированное императивно. uhbif19 21.07.11 в 08:47 |
||
|
Если назвать этот скрипт helloworld.py и запустить его в интерпретаторе Python, то на порту 8080 запуститься веб-сервер : uhbif19 21.07.11 в 08:50 |
||
|
Если зайти на корневую страничку (/), нашего сервера localhost:8080, мы увидим надпись "Hello world !". Если же зайти на страничку /goodbye, мы увидим надпись "Goodbye world !". uhbif19 21.07.11 в 08:54 |
||
|
Нажатие Ctrl-C закроет программу. uhbif19 21.07.11 в 08:54 |
||
|
А теперь рассмотрим в деталях, что делает это приложение. uhbif19 21.07.11 в 08:55 |
||
|
Импорты uhbif19 21.07.11 в 08:55 |
||
|
Скрипт helloworld.py импортирует следующее : uhbif19 21.07.11 в 08:57 |
||
|
Он импортирует :class:~pyramid.config.Configurator из модуля :mod:pyramid.config. Экземпляр этого класса, будет использован для конфигурации вашего приложения. uhbif19 21.07.11 в 08:58 |
||
|
Класс :class:pyramid.response.Response будет использован при создании объекта :term:response. uhbif19 21.07.11 в 09:00 |
||
|
Как многие другие веб-фреймворки, :app:Pyramid использует протокол :term:WSGI для взаимодействия в веб сервером. Сервер :mod:paste.httpserver - это удобный пример WSGI сервера. uhbif19 21.07.11 в 09:04 |
||
|
Обьявления View Callable uhbif19 21.07.11 в 09:05 Определения видов-для-вызова rnd0011 10.06.12 в 18:50 |
||
|
В скрипте, кроме импортированния, были определенны две функции hello_world и goodbye_world. uhbif19 21.07.11 в 09:06 |
||
|
Они не делают ничего сложного. Обе принимают один аргумент. Эти функции не выполняют никаких действий, но возвращают экземпляр :class:Response, со значениями "Hello world!" для функции hello_world и "Goodbye world!" для goodbye_world. uhbif19 21.07.11 в 09:10 |
||
|
Такие функции называются :term:view callable. View callable обрабатывает один аргумент request. Она должна возвращать ответ :term:response. View callable не обязана быть функцией. Она может быть другой сущностью, например классом, но мы пока будем говорить только о функциях. uhbif19 21.07.11 в 09:13 |
||
|
Объект :term:request (от которого вызывается view callable), это форма представления HTTP запроса полученного :app:Pyramid с помощью активного WSGI сервера. uhbif19 21.07.11 в 09:15 |
||
|
View callable возвращает обьект :term:response, из которого строится ответ HTTP; этот объект будет преобразован в обыкновенный текст активным WSGI сервером и отослан в HTTP ответе, браузеру пользователя. uhbif19 21.07.11 в 09:19 |
||
|
.. note:: Как мы увидим в следующих главах, возвращение Response обьекта не обязательно; вместо этого можно настроить использование :term:renderer. Если мы используем :term:renderer, то view callable может возвращать любое значение, воспринимаемое его рендером. А уже рендер преобразует это значение в готовый Response обьект. uhbif19 21.07.11 в 09:38 |
||
|
Конфигурация приложения uhbif19 21.07.11 в 09:34 |
||
|
Следующий код определяет *конфигурацию* данного приложения. Оно конфигурируется, с использованием уже определенных и импортированных функций и классов. uhbif19 21.07.11 в 09:41 |
||
|
Рассмотрим это по-поподробнее... uhbif19 21.07.11 в 09:41 Рассмотрим это поподробнее... rnd0011 10.06.12 в 17:17 |
||
|
Создание Конфигуратора uhbif19 21.07.11 в 09:42 |
||
|
Код if __name__ == '__main__': - это одна из идиом Python : код за ifбудет выполнен, только при запуске приложения напрямую из командной строки. uhbif19 21.07.11 в 09:44 |
||
|
helloworld.pyможно рассматривать как модуль Python. Использование этой идиомы - хорошая идея; если этот модуль будет импортирован другим модулем Python, то код внутри if не будет выполнен. uhbif19 21.07.11 в 09:47 |
||
|
Строка config = Configurator(), создает объект класса config = Configurator(). uhbif19 21.07.11 в 09:50 |
||
|
Конфигурированние uhbif19 21.07.11 в 09:50 |
||
