Перейти до вмісту

Flask

Матеріал з Вікіпедії — вільної енциклопедії.
Flask
ТипВебфреймворк
РозробникАрмін Ронакер
Стабільний випуск1.0.2 (2 травня 2018; 8 років тому (2018-05-02)[1])
Операційна системаCross-platform
Мова програмуванняPython
ЛіцензіяBSD
Онлайн-документаціяflask.palletsprojects.com​(англ.) Редагувати інформацію у Вікіданих
Репозиторійgithub.com/pallets/flask
Вебсайтflask.pocoo.org

Flask — мікрофреймворк для вебдодатків, створений з використанням Python. Його основу складає інструментарій Werkzeug та рушій шаблонів Jinja2. Поширюється відповідно до умов ліцензії BSD.

Станом на лютий 2022 року стабільна версія Flask має номер 2.02.[2] Flask використовується для розробки таких проєктів як Pinterest,[3] LinkedIn,[4] а також сторінка спільноти Flask.[5]

Flask називається мікрофреймворком, оскільки він не вимагає спеціальних засобів чи бібліотек.[6] У ньому відсутній рівень абстракції для роботи з базою даних, перевірки форм або інші компоненти, які надають широковживані функції за допомогою сторонніх бібліотек. Однак, Flask має підтримку розширень, які надають додаткові властивості таким чином, наче вони були доступні у Flask із самого початку. Існують розширення для встановлення об'єктно-реляційних зв'язків, перевірки форм, контролю процесу завантаження, підтримки різноманітних відкритих технологій аутентифікації та декількох поширених засобів для фреймворку. Розширення оновлюються частіше аніж базовий код.[7]

Історія

[ред. | ред. код]

Flask створено Арміном Ронакером у 2010 році в межах діяльності проєкту Pocoo.[8]

«Все починалося як першоквітневий жарт, проте, здобувши велику популярність, проєкт став повноцінним серйозним додатком.»

— Ronacher, Armin. Opening the Flask (PDF). Архів оригіналу (PDF) за 30 березня 2012. Процитовано 30 вересня 2011.

Оригінал: It came out of an April Fool's joke but proved popular enough to make into a serious application in its own right.[9]

Flask базується на засобі Werkzeug (реалізація WSGI) та рушії шаблонів Jinja2, які були створені як проєкти Pocoo у 2007 та 2008 роках відповідно, коли Ронакер і Ґеорґ Брандл розробляли систему дошки оголошень на Python.[10]

Попри відсутність офіційного релізу на той час, Flask швидко здобув популярність серед спільноти Python. Станом на середину 2016 року він був найпопулярнішим Python-вебфреймворком на GitHub.[11]

Flask не підтримує асинхронне програмування та бібліотеки, що його використовують. Для цього було створено форк під назвою Quart.[12]

Властивості

[ред. | ред. код]
  • Містить сервер для розробки та відлагоджувач
  • Вбудована підтримка юніт-тестів
  • Управління запитами RESTful
  • Використовує шаблони Jinja2
  • Має підтримку безпечних куків (сесії на стороні клієнта)
  • 100 % відповідність WSGI 1.0
  • Підтримка Unicode
  • Докладна документація
  • Сумісність з Google App Engine
  • Наявність розширень для забезпечення бажаної поведінки

Компоненти

[ред. | ред. код]

Werkzeug (в перекладі з німецької «інструмент») — бібліотека на python, яка реалізує WSGI. Може створювати об'єкти request, response та має набір допоможних функцій.

Jinja це рушій шаблонів для python, також розроблений Арміном Ронакером. Схожий на Django-шаблонізатор.

MarkupSafe

[ред. | ред. код]

MarkupSafe це бібліотека для обробки рядків для мови програмування python. Реалізує тип даних MarkupSafe, який розширює рядок, помічає його вміст як «безпечний» що дозволяє спростити обробку рядків, які потребують екранування в HTML, щоб той текст не був інтепретований HTML-теги, тощо.

ItsDangerous

[ред. | ред. код]

ItsDangerous — серіалізатор рядків для мови програмування python. Використовується для того щоб зберігати сессії в cookie, не дозволяючи користувачам їх перехоплювати та змінювати.

Приклад

[ред. | ред. код]

Даний код демонструє простий вебдодаток, який показує фразу «Hello World!»:

from flask import Flask
app = Flask(__name__)

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

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

Зноски

[ред. | ред. код]
  1. ↑ Архівована копія. Архів оригіналу за 22 серпня 2017. Процитовано 23 травня 2017.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  2. ↑ PyPI Flask. Python Package Index. 27 червня 2016. Архів оригіналу за 22 серпня 2017. Процитовано 27 червня 2015.
  3. ↑ What challenges has Pinterest encountered with Flask?
  4. ↑ Rachel Sanders: Developing Flask Extensions - PyCon 2014. Архів оригіналу за 31 липня 2017. Процитовано 23 травня 2017.
  5. ↑ Community web page for Flask. Архів оригіналу за 5 січня 2018. Процитовано 1 червня 2021.
  6. ↑ Flask Foreword. Архів оригіналу за 10 листопад 2015. Процитовано 23 травень 2017. {{cite web}}: Не збігається часова мітка у |archive-date= / |archive-url=; можливо, 10 листопада 2015? (довідка) [Архівовано 2015-11-10 у Wayback Machine.]
  7. ↑ Flask Extensions. Архів оригіналу за 17 травня 2018. Процитовано 23 травня 2017.
  8. ↑ Pocoo team. Архів оригіналу за 10 листопада 2015. Процитовано 23 травня 2017. [Архівовано 15 березня 2018 у Wayback Machine.]
  9. ↑ Ronacher, Armin. Opening the Flask (PDF; 2,8 MB). Процитовано 22 травня 2012.
  10. ↑ Pocoo History. Архів оригіналу за 15 листопада 2015. Процитовано 23 травня 2017. [Архівовано 19 листопада 2017 у Wayback Machine.]
  11. ↑ Python libraries by GitHub stars. Архів оригіналу за 29 липня 2017. Процитовано 23 травня 2017.
  12. ↑ Quart documentation — Quart 0.18.3 documentation. quart.palletsprojects.com. Процитовано 16 лютого 2023.