Flask это микрофреймворк для Python, основанный на Werkzeug, Jinja 2 и хороших намерениях.

В этой статье мы рассмотрим пример "Hello World" на Flask, который описан на главной странице сайта этого фреймворка.

examples/flask/hello_world.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

После установки Flask с помощью pip install Flask я могу запустить приведенный выше скрипт через командную строку:

$ python examples/flask/hello_world.py 

И увижу такой ответ:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Затем я открыл браузер по указанному адресу и там действительно отображался "Hello World!", тем временем в консоли я увидел:

127.0.0.1 - - [03/Feb/2015 09:43:14] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [03/Feb/2015 09:43:14] "GET /favicon.ico HTTP/1.1" 404 -

Первая запись это мой запрос, вторая запись относится к браузеру, попытавшемуся загрузить иконку сайта. В конце первой строки приведен HTTP-статус 200, который указывает на успешное выполнение запроса, вторая строка заканчивается HTTP-статусом 404, обозначающим "Not found".

Код приложения выглядит достаточно очевидным.

Мы объявили функцию с произвольным именем (hello), и использовали декоратор @app.route("/"), чтобы связать запрос на / с этой функцией.

@app.route("/")
def hello():
    return "Hello World!"

Когда Flask запущен, он принимает HTTP-запросы, а затем перенаправляет их на функции, основываясь на пути, указанном в запросе. Таким образом код выше означает - если запрос приходит на /, тогда запустить функцию hello.

И в конце скрипта мы видим следующее:

if __name__ == "__main__":
    app.run()

Код app.run() запускает веб-сервер с приложением, основанным на Flask. Код if __name__ == "__main__": позволяет запустить веб-сервер только в случае, если этот код запускается как скрипт.

Это позволит нам использовать повторно код из этого файла как часть другого веб-приложения на Flask.

(В Perl такое поведение называют Modulino.)