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

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

Веб-серверы

267

Функция run() запускает встроенный тестовый веб-сервер Bottle. Вам не нуж-

но использовать его в программах, написанных с помощью Bottle, но это может

оказаться полезным на первых этапах разработки и тестирования.

Теперь вместо создания текста домашней страницы в коде создадим отдельный

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

My <b>new</b> and <i>improved</i> 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/<thing>')

def echo(thing):

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

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

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

вый аргумент через URL. За это отвечает строка @route('/echo/<thing>') в преды-

дущем примере. Конструкция <thing> в маршруте означает, что все, что находится

в URL после /echo/, присваивается строковому аргументу thing, который переда-

ется функции echo. Чтобы увидеть, что случится, остановите старый сервер, если

он все еще работает, и запустите его с новым кодом:

$ python bottle3.py

268

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

Далее перейдите в браузере по ссылке http://localhost:9999/echo/Mothra. Вы долж-