Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 205

ки довольно велико.

Для того чтобы избежать задержки запуска, люди начали встраивать интерпре-

татор языка в веб-сервер. Apache запускал код на PHP внутри своего модуля mod_php,

Perl — внутри модуля mod_perl и Python — внутри модуля mod_python. Далее код этих

динамических языков мог быть выполнен внутри долгоиграющего процесса Apache,

а не во внешних программах.

Альтернативный метод заключается в том, чтобы запускать динамический язык

внутри отдельной долгоиграющей программы и заставить ее обмениваться данны-

ми с веб-сервером. Примерами таких программ являются FastCGI и SCGI.

Веб-разработка с использованием Python совершила рывок с появлением Web

Server Gateway Interface (WSGI) — универсального API между веб-приложениями

и веб-серверами. Все веб-фреймворки и веб-серверы Python, показанные далее,

используют WSGI. Обычно вам не нужно знать, как работает WSGI (для этого

многого и не потребуется), но осведомленность об основных принципах его функ-

ционирования может действительно помочь разработке.

Фреймворки

Веб-серверы обрабатывают детали работы HTTP и WSGI, но вам нужно исполь-

зовать веб-фреймворки для того, чтобы написать код Python, который будет под-

держивать сайт. Поэтому сейчас мы немного поговорим о фреймворках, а затем

266

Глава 9. Распутываем Всемирную паутину

вернемся к альтернативным способам обслуживания сайтов, которые их исполь-

зуют.

Для того чтобы написать сайт с помощью Python, существует множество веб-

фреймворков (некоторые даже могут сказать, что их слишком много). Веб-фреймворк

обрабатывает как минимум запросы клиента и ответы сервера. Он может предо-

ставлять следующие возможности:

 маршруты — интерпретирует URL и находит соответствующие файлы на сер-

вере или серверный код Python;

 шаблоны — объединяет серверные данные в страницы HTML;

 аутентификация и авторизация — обрабатывает имена пользователей, пароли,

разрешения;

 сессии — обслуживает временное хранилище данных во время посещения сайта

пользователем.

В следующих разделах мы напишем пример, использующий два фреймворка

(Bottle и Flask). Далее поговорим об альтернативах, в частности о сайтах, работа-

ющих с базами данных. Вы можете найти подходящий фреймворк Python для

любого сайта, который только можете себе представить.

Bottle

Bottle состоит из одного файла Python, поэтому его довольно легко опробовать

и развернуть. Bottle не является частью стандартной библиотеки Python, поэтому

установите его с помощью следующей команды:

$ pip install bottle

Рассмотрим код, который запустит тестовый веб-сервер и вернет текстовую

строку, когда ваш браузер обратится по URL http://localhost:9999/. Сохраните этот

файл как bottle1.py:

from bottle import route, run

@route('/')

def home():

return "It isn't fancy, but it's my home page"