python
August 29, 2021

3 шага для быстрого старта сервера Flask

В этой статье я раскрою пошаговую инструкцию, как быстро запустить веб-сервер Flask с Python и начать баловаться с его возможностями.

В первую очередь, надо создать новый скрипт, который и сделает все для нас. Итак, в нем должно быть реализовано следующее:

  • с помощью декоратора @app.route заданы функции обработки запросов к конкретным адресам (указываются в скобках после декоратора);
  • создан объект приложения, который отвечает за логику работы web-сервера;
  • вызван его метод run для старта сервера.

Итоговый скрипт имеет следующий код:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>site main page</h1>'

if __name__=='__main__':
    app.run(debug=True)

В строке app = Flask(__name__) как раз и создается объект приложения (конструктор в качестве аргумента получает имя главного модуля), для которого запускается метод run (app.run()), инициируя старт сервера. Кроме того, пока у нас имеется одна функция, обрабатывающая обращение к корню сайта (index).

Запустив сценарий, получим примерно такой вывод:

Если в браузере вы обратитесь по адресу http://127.0.0.1:5000/ (указан на картинке) получите вывод функции index:

Теперь остановим сервер (для этого достаточно нажать комбинацию CTRL+C) и продемонстрируем способ передачи данных сценарию. Для этого перепишем последний:

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>site main page</h1>'

@app.route('/args')
def get_args():
        name = request.args.get("name")
        surname = request.args.get("surname")

        return f'<h1>My name - {name} and surname - {surname} </h1>'


@app.route('/welcome/<id>')
def welcome(id):
        return f'<h2>Hello, user with id={id}</h2>'

if __name__=='__main__':
    app.run(debug=True)

Итак, мы создали два новых обработчика, принимающих данные по-разному. Функция welcome получает id при обращении по адресу /welcome/id. Имитация этих действий в браузере приведет к следующему результату:

Иной способ реализован в функции get_args, которая для получения Get аргументов использует объект request из модуля flask. Наберем в адресной строке http://127.0.0.1:5000/args?name=Ivan&surname=Ivanov и получим ответ:

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