Flask

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Flask
Тип Вебфреймворк
Розробник Армін Ронакер
Стабільний випуск 1.0.2 (2 травня 2018; 5 років тому (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]

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

"It came out of an April Fool's joke but proved popular enough to make into a serious application in its own right."[9][10][11]

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

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

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

Властивості[ред. | ред. код]

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

Компоненти[ред. | ред. код]

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

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

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

Jinja це рушій шаблонів для python, також розроблений Арміном Ронакером. Схожий на Django-шаблонізатор. , for the Python programming language. Similar to the Django web framework, it handles templates in a sandbox.

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.
  7. Flask Extensions. Архів оригіналу за 17 травня 2018. Процитовано 23 травня 2017.
  8. Pocoo team. Архів оригіналу за 10 листопад 2015. Процитовано 23 травень 2017.
  9. Ronacher, Armin. Opening the Flask (PDF). Архів оригіналу (PDF) за 30 березня 2012. Процитовано 30 вересня 2011.
  10. Ronacher, Armin (3 квітня 2010). April 1st Post Mortem. Armin Ronacher's Thoughts and Writings. Архів оригіналу за 14 травня 2018. Процитовано 25 липня 2015.
  11. Denied: the next generation python micro-web-framework (April Fools page). Архів оригіналу за 4 вересня 2011. Процитовано 30 вересня 2011.
  12. Pocoo History. Архів оригіналу за 15 листопад 2015. Процитовано 23 травень 2017.
  13. Python libraries by GitHub stars. Архів оригіналу за 29 липня 2017. Процитовано 23 травня 2017.
  14. Quart documentation — Quart 0.18.3 documentation. quart.palletsprojects.com. Процитовано 16 лютого 2023.