**Flask** (*Фласк*, англ.: flask — фляга) — гэта мікра вэб-фрэймворк, напісаны на мове Python. Ён класіфікуецца як мікрафрэймворк, пасколькі не патрабуе выкарыстання спецыяльных інструментаў альбо бібліятэк. У ім няма пласта абстракцыі баз даных, валідацыі формаў і іншых кампанентаў, дзе агульныя функцыі падаюць ужо існыя бібліятэкі іншых распрацоўнікаў. Аднак Flask падтрымлівае пашырэнні, якія дазваляюць дадаваць функцыі вэб-праграмы так, як калі б яны былі рэалізаваны ў самым Flask. Існуюць пашырэнні для аб’ектна-рэляцыйных адлюстраванняў (англ.: object-relational mapping, ORM), праверкі формаў, апрацоўкі загрузак, розных адкрытых тэхналогій аўтэнтыфікацыі і шэрагу агульных інструментаў, звязаных з фрэймворкам.

Сярод вэб-сайтаў, якія выкарыстоўваюць Flask — Pinterest і LinkedIn.

Гісторыя
--------

Flask быў створаны Армінам Ронахерам з Pocoo, міжнароднай групы энтузіястаў Python утворанай у 2004 годзе. Па словах Ронахера, першапачаткова ідэя была першакрасавіцкім жартам, якая аказалася дастаткова папулярнай, каб ператварыцца ў сур’ёзную праграму. Назва з’яўляецца гульнёй слоў з больш раннім фрэймворкам Bottle (англ.: bottle — бутэлька).

Калі ў 2004 годзе Ронахер і Георг Брандл стварылі на Python сістэму дошак аб’яваў, у Pocoo з’явіліся праекты Werkzeug і Jinja.

У красавіку 2016 года каманда Pocoo была распушчана, а распрацоўка Flask і спадарожных бібліятэк перайшла да зноў утворанага праекта Pallets. З 2018 года даныя і аб’екты, звязаныя з Flask, могуць быць адлюстраваны з дапамогай Bootstrap.

Flask стаў папулярным сярод энтузіястаў Python. Па стане на кастрычнік 2020 гады ён займае другое месца па колькасці зорак на GitHub сярод фрэймворкаў для вэб-распрацоўкі на Python, толькі трохі саступаючы Django, і быў прызнаны самым папулярным вэб-фрэймворкам у апытанні Python Developers Survey 2018, 2019, 2020 і 2021.

Кампаненты
----------

Мікрафрэймворк Flask з’яўляецца часткай праекта Pallets (раней Pocoo) і заснаваны на некалькіх іншых праектах, усе яны працуюць пад ліцэнзіяй BSD.

### Werkzeug

Werkzeug (ад ням.: werkzeug — «інструмент») — гэта бібліятэка утыліт для Python, прызначаная для працы з праграмамі Web Server Gateway Interface (WSGI). Werkzeug дазваляе ствараць аб’екты для запытаў, адказаў і службовых функцый. Яна можа быць выкарыстана ў якасці асновы для стварэння ўласнай праграмнай структуры і падтрымлівае версіі Python 2.7, 3.5 і пазнейшыя.

### Jinja

Jinja — шабланізатар для Python, таксама распрацаваны Ронахерам. Падобна на Django, ён працуе з шаблонамі ў «пясочніцы».

### MarkupSafe

MarkupSafe — гэта бібліятэка апрацоўкі радкоў для Python. Аднайменны тып MarkupSafe пашырае радковы тып Python і пазначае яго змесціва як «бяспечнае». Камбінаванне MarkupSafe са звычайнымі радкамі аўтаматычна экрануе немаркіраваныя радкі, пазбягаючы пры гэтым падвойнага экранавання ўжо пазначаных радкоў.

### ItsDangerous

ItsDangerous — гэта бібліятэка бяспечнай серыялізацыі даных для Python. Яна выкарыстоўваецца для захоўвання сесіі праграмы Flask у файлах cookie, не дазваляючы карыстальнікам умешвацца ў змесціва сесіі.

Асаблівасці
-----------

* Сервер распрацоўкі і адладчык
* Убудаваная падтрымка модульнага тэсціравання
* Адпраўка запытаў RESTful
* Выкарыстоўвае шабланізатар Jinja
* Падтрымка бяспечных файлаў cookie (сеансы на баку кліента)
* 100 % сумяшчальнасць з WSGI 1.0
* На аснове Unicode
* Поўная дакументацыя
* Сумяшчальнасць з Google App Engine
* Даступныя пашырэнні для пашырэння функцыянальнасці

Прыклад
-------

У прыведзеным ніжэй кодзе паказаная простая вэб-праграма, якая адлюстроўвае паведамленне «Hello World!» па запыце да сервера:

```
from flask import Flask
app = Flask(\_\_name\_\_)

@app.route("/")
def hello() -> str:
  return "Hello World"

if \_\_name\_\_ == "\_\_main\_\_":
  app.run()

```

Гл. таксама
-----------

* Django
* FastAPI

Зноскі
------

1. ↑  Flask Foreword **(нявызн.)**. Архівавана з першакрыніцы 17 лістапада 2017.
2. ↑  Flask Extensions **(нявызн.)**. Архівавана з першакрыніцы 17 мая 2018.
3. ↑  What challenges has Pinterest encountered with Flask?
4. ↑  Rachel Sanders: Developing Flask Extensions — PyCon 2014
5. ↑  Pocoo Team **(нявызн.)**. Архівавана з першакрыніцы 15 сакавіка 2018.
6. 1 2  *Ronacher*. Opening the Flask **(нявызн.)**. Архівавана з першакрыніцы 17 снежня 2016. Праверана 30 верасня 2011.
7. ↑  *Ronacher*. April 1st Post Mortem **(нявызн.)**. *Armin Ronacher's Thoughts and Writings* (3 красавіка 2010). Архівавана з першакрыніцы 14 мая 2018. Праверана 25 ліпеня 2015.
8. ↑  Denied: the next generation python micro-web-framework (April Fools page) **(нявызн.)**. Архівавана з першакрыніцы 4 верасня 2011. Праверана 30 верасня 2011.
9. ↑  History **(нявызн.)**.  Pocoo Team. Архівавана з першакрыніцы 19 лістапада 2017. Праверана 25 сакавіка 2015.
10. ↑  *Ronacher*. Hello Pallets Users **(нявызн.)**. *The Pallets Projects* (1 красавіка 2016). Праверана 8 мая 2021.
11. ↑  Pocoo **(нявызн.)**. *www.pocoo.org*. Праверана 8 мая 2021.
12. ↑  Bootstrap-Flask **(нявызн.)**.  HelloFlask. Праверана 6 лістапада 2022.
13. ↑  Python libraries by GitHub stars **(нявызн.)**. *Github*. Праверана 27 студзеня 2020.
14. ↑  Python Developers Survey 2018 **(нявызн.)**.  www.jetbrains.com (1 лістапада 2018).
15. ↑  Python Developers Survey 2019 **(нявызн.)**.  www.jetbrains.com (8 верасня 2019).
16. ↑  Python Developers Survey 2020 **(нявызн.)**.  www.jetbrains.com (8 верасня 2020).
17. ↑  Python Developers Survey 2021 **(нявызн.)**.  www.jetbrains.com (8 верасня 2021).
18. ↑  *Ronacher*. Werkzeug The Python WSGI Utility Library **(нявызн.)**. *palletsprojects.com*. Праверана 27 May 2018.
19. ↑  *Ronacher*. Installation, Python Version **(нявызн.)**(недаступная спасылка). *palletsprojects.com*. Архівавана з першакрыніцы 11 мая 2021. Праверана 20 April 2020.

|  |  |
| --- | --- |
| ⚙️   Тэматычныя сайты | Open Hub |

| ⛭Вэб-фрэймворкі |
| --- |
| ASP.NET | 
DotNetNuke •
ASP.NET MVC •
MonoRail
 |
| ColdFusion | 
ColdSpring •
Fusebox •
Mach-II •
Model-Glue
 |
| Java | 
Cocoon •
Struts •
Velocity •
WebWork 2) •
AppFuse •
Aranea •
Eclipse •
Facelets •
Flexive •
FreeMarker •
Google Web Toolkit •
Grails (Groovy) •
Hamlets •
ItsNat •
JavaServer Faces •
Jspx •
JBoss Seam •
jZeno •
Lift (Scala) •
Makumba •
OpenLaszlo •
OpenXava •
Play! (Scala, Java) •
Reasonable Server Faces (RSF) •
Restlet •
RichFaces •
RIFE •
Shale •
SmartClient •
Spring •
Stripes •
Tapestry •
ThinWire •
Vaadin •
WebMacro •
WebWork •
WebObjects •
Wicket •
ZK
 |
| JavaScript | 
Node.js •
Vue.js •
AJILE •
Clean AJAX •
Dojo Toolkit •
Echo •
Ext JS •
jQuery •
jMaki •
Microsoft AJAX Library •
MochiKit •
MooTools •
Prototype •
qooxdoo •
Rialto Toolkit •
Rico •
script.aculo.us •
SmartClient •
Spry •
SproutCore •
Yahoo! UI Library •
Underscore •
PhoneGap
 |
| Perl | 
Catalyst •
Interchange •
Titanium •
Maypole •
HTML:Mason •
Mojolicious
 |
| PHP | 
Acode •
Akelos •
BlueShoes •
CakePHP •
Canvas •
CodeIgniter •
Cotonti •
DIY •
Drupal •
Fuse •
Horde •
Kohana •
LiveStreet •
Laravel •
MODX •
Phalcon PHP •
PHP For Applications •
PHPOpenbiz •
PRADO •
Qcodo •
Seagull •
Solar •
Symfony •
W3Core •
Yii •
Zend •
Zoop •
Joomla
 |
| Python | 
CherryPy •
Django •
Flask •
FastAPI •
GAE framework •
Karrigell •
Nevow •
Porcupine •
Pylons •
Pyramid •
Spyce •
TurboGears •
Twisted •
Tornado •
Webware •
Zope
 |
| Ruby | 
Camping •
Nitro •
IOWA •
Ramaze •
Cerise •
Merb •
Ruby on Rails •
Sinatra •
Padrino
 |
| Іншыямовы | 
Alpha Five •
Fusebox (ColdFusion, PHP) •
Helma Object Publisher (Server-side) •
Magic (Scheme) •
OpenACS (Tcl) •
Seaside (Smalltalk) •
UnCommon Web (Common Lisp) •
Yaws (Erlang) •
Oracle Application Express (PL/SQL) •
 |