Flask

Содержание
Введение
Установка
«Hello World!»
Простейший веб-сервер
Свои сообщения в лог
Другие статьи о Flask

Введение

Flask — фреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2.

Относится к категории так называемых микрофреймворков — минималистичных каркасов веб-приложений, сознательно предоставляющих лишь самые базовые возможности.

Поддерживается установка посредством пакетного менеджера PyPI, версия 1.0 совместима с Python 2.7, Python 3.3 и выше.

Создатель и основной автор — австрийский программист Армин Ронахер, начал работу над проектом в 2010 году.

Установка Flask

Установка Flask зависит от Вашего окружения. Если Вы работаете в IDE типа PyCharm, виртуальное окружение для Вашего проекта уже создано (см. здесь ).

Если Вы в «чистой» коносли, то обязательно создайте виртуальное окружение для проекта на Flask. О том как это сделать вы можете прочитать в цикле статей «Виртуальное окружение в Python»

Предполагается, что Python, Pip и virtualenv уже установлены.

Создайте новое виртуальное окружение, активируйте его и в нём выполните

python -m pip install flask

Hello World

По умолчанию Flask отвечает на GET.

Создадим файл server.py со следующим кодом

from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()

@app.route("/") - это декоратор прочитать про декораторы с параметром можно здесь

Не называйте свой файл flask.py это приведёт к ошибке .

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

Запустить файл server.py можно будет командой

python server.py

Но традиционно испльзуется flask run, про который я расскажу в уроке «Первый проект на Flask» .

Если в Вашем окружении установлен Flask то Вы увидите

* Serving Flask app "server" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Можете открыть браузер и ввести в строку поиска http://127.0.0.1:5000/

На экране должно появиться

Hello Flask!

А в консоли должно появиться

127.0.0.1 - - [15/Jun/2020 16:19:06] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [15/Jun/2020 16:19:07] "GET /favicon.ico HTTP/1.1" 404 -

404 - так как я не добавил файл favicon.ico

Изображение баннера

Простой вебсервер на Flask

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

Вы можете ответить 200 и дальше слушать что присылает приложение.

Аналогичный функционал можно реализовать огромным количеством способов, например с помощью Soap UI

from flask import request from flask import Flask app = Flask(__name__) @app.route("/") def index(): return 'Hello world' @app.route("/bestws") def cakes(): return 'HeiHei.ru!' @app.route("/heiheiru/holidays", methods = ['GET']) def heiheiru_holidays(): timestamp = request.args.get('timestamp') print(f"Кто-то сделал GET запрос на heihei.ru и передал время {timestamp}") return '200' @app.route("/heiheiru/fests", methods = ['GET','PUT', 'POST']) def heiheiru_fests(): epc = request.args.get('epc') print(epc) antenna = request.args.get('antenna') print(antenna) timestamp = request.args.get('timestamp') print(timestamp) userMemory = request.args.get('userMemory') print(userMemory) return '200' if __name__ == '__main__': app.run(debug=True, host='0.0.0.0')

Свои сообщения в лог

Добавить свои сообщения в лог Flask можно с помощью logger и current_app.

current_app особенно пригодится для работы с blueprint

import logging from flask import current_app current_app.logger.warn("Custom Log")

Передать переменную в шаблон

Чтобы передать переменную в шаблон, достаточно указать её как аргумент в render_template()

@bp.route("/") def index(): return render_template( "monitor/index.html", stat=db )

Чтобы использовать её в шаблоне нужны двойные фигурные скобки

{{ stat }}

Или, например, в цикле

{% for s in stat %} <li> {{ s.timestamp }} {{ s.status }} {% endfor %}

Похожие статьи
Flask
Основы
Python
Запуск Flask на хостинге
Запуск Flask на Linux сервере
Flask в Docker
Первый проект на Flask
Шаблоны Jinja
Web Forms
Blueprint - Чертежи Flask
Как разбить приложение Flask на части
Flask FAQ
Ошибки
Декораторы в Python
HTML
CSS
Изображение баннера

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: