Простой Python. Современный стиль программирования (Любанович) - страница 155

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"

>run(host='localhost', port=9999)

Bottle использует декоратор route, чтобы связать URL со следующей функцией; в этом примере / (домашняя страница) обрабатывается функцией home(). Запустите этот сценарий сервера с помощью следующей команды:

>$ python bottle1.py

Когда вы обратитесь по адресу http://localhost:9999, вы должны увидеть следующее:

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

Функция run() запускает встроенный тестовый веб-сервер Bottle. Вам не нужно использовать его в программах, написанных с помощью Bottle, но это может оказаться полезным на первых этапах разработки и тестирования.

Теперь вместо создания текста домашней страницы в коде создадим отдельный HTML-файл, который называется index.html и содержит такую строку:

>My new and improved home page!!!

Укажите Bottle возвращать содержимое этого файла, когда запрашивается домашняя страница. Сохраните этот сценарий как bottle2.py:

>from bottle import route, run, static_file

>@route('/')

>def main():

>····return static_file('index.html', root='.')

>run(host='localhost', port=9999)

В вызове static_file() мы хотим получить файл index.html из каталога, указанного в root (в нашем случае в '.', текущем каталоге). Если код предыдущего примера все еще выполняется, то остановите его. Теперь запустите новый сервер:

>$ python bottle2.py

Каждый раз, когда вы обращаетесь к странице http:/localhost:9999/, вы должны видеть следующее:

>My new and improved home page!!!

Добавим последний пример, который демонстрирует, как передавать аргументы в URL и использовать их. Конечно же, этот файл будет называться bottle3.py:

>from bottle import route, run, static_file

>@route('/')

>def home():

>····return static_file('index.html', root='.')

>@route('/echo/')

>def echo(thing):

>····return "Say hello to my little friend: %s!" % thing

>run(host='localhost', port=9999)

У нас появилась новая функция echo(), в которую мы хотим передавать строковый аргумент через URL. За это отвечает строка @route('/echo/') в предыдущем примере. Конструкция в маршруте означает, что все, что находится в URL после /echo/, присваивается строковому аргументу thing, который передается функции echo. Чтобы увидеть, что случится, остановите старый сервер, если он все еще работает, и запустите его с новым кодом: