Flask
Flask je mikro webový framework napsaný v programovacím jazyce Python. Je klasifikován jako mikro webový framework, protože nevyžaduje konkrétní nástroje ani další vnitřní knihovny. Nemá žádnou vrstvu abstrakce databáze, ověřování formulářů ani žádné jiné komponenty třetích stran poskytující běžné funkce.
Vývojář | Armin Ronacher |
---|---|
Aktuální verze | 2.0.2 (4. října 2021) |
Operační systém | multiplatformní software |
Vyvíjeno v | Python |
Typ softwaru | webový aplikační framework |
Licence | 3-clause BSD License |
Web | flask |
Některá data mohou pocházet z datové položky. |
Flask však podporuje rozšíření, která mohou přidávat do aplikace další funkce, jako by byly implementovány v samotném Flasku. Existují rozšíření pro objektově-relační mapovače, ověřování formulářů, zpracování nahrávání, různé technologie otevřeného ověřování a několik dalších souvisejících nástrojů pro tvorbu webových aplikací.[1]
Mezi aplikace využívající Flask patří například služba Pinterest a LinkedIn.[2][3]
V základu je založen na Pocoo projektech, knihovně nástrojů Werkzeug a šablonovacímu systému Jinja2.
Werkzeug
Werkzeug je knihovna nástrojů pro programovací jazyk Python, jinými slovy sada nástrojů pro aplikace Web Server Gateway Interface (WSGI), a je licencována na základě licence BSD. Werkzeug může realizovat softwarové objekty pro funkce požadavků, odpovědí a obslužných programů.[4]
Jinja2
Šablonovací systémy umožňují uživateli generovat požadovaný typ obsahu, jako je například HTML, s použitím některých datových a programovacích chytrých konstrukcí. Pro manipulaci s výstupem je tedy možné zajistit podmínky a cykly. Šablony jsou vytvořeny vývojářem a následně zpracovány šablonovacím systémem. Při tomto procesu jsou přepsány značky a bloky, které jsou nahrazeny výstupními daty.[5]
Flask využívá šablonovací systém Jinja2. Jinja2 je moderní šablonovací jazyk pro Python, který je modelovaný podobně podle šablon Django. Je rychlý, široce používaný a bezpečný.[6] Pro přístup k proměnným se používají dvojité složené závorky. Pro podmínky a cykly se používá složená závorka a znak procenta.
Historie
Framework Flask byl vytvořen programátory Arminem Ronacherem a Georgem Brandlem z týmu Pocoo, mezinárodní skupiny nadšenců Pythonu, která vznikla v roce 2004. Podle Ronachera byla tato myšlenka původně vtipem z Aprílu, který byl natolik populární, že se nakonec stal seriózní aplikací.[7]
Flask se stal populární mezi vývojáři Pythonu. V říjnu roku 2020 měl na GitHubu druhé místo v rámci vývojových frameworků v Pythonu, jen mírně za Djangem, a byl zvolen nejpopulárnějším webovým frameworkem v průzkumu Python Developers Survey 2018.[8]
Základní funkce
- Vývojový server a debugger
- Integrovaná podpora pro testování jednotek (Unit testing)
- Flask RESTful API
- Používá šablonování Jinja2
- Podpora zabezpečených cookies
- 100% WSGI 1.0 kompatibilní
- Založeno na kódování Unicode
- Rozsáhlá dokumentace
- Kompatibilita s Google App Engine
Flask-RESTful API
Flask-RESTful je rozšíření FW Flasku, které přidává abstraktní podporu pro rychlé vytváření REST požadavků (API). Jedná se v poměru o tenkou vrstvu abstrakce, která by měla fungovat s existujícím ORM a dalšími knihovnami. Flask-RESTful je navržen tak, aby ho uživatelé, kteří znají Flask co nejrychleji pochopili. Za vývojem Flask-RESTful stojí firma Twilio, ale přispělo do něj více než sto jednotlivců. Je zveřejněn pod BSD licencí. Závisí na Flasku a dalších třech modulech. Celkově tak nepřímo závisí na ostatních modulech. Na GitHubu má necelých šest tisíc hvězd. [9] Toto rozšíření podporuje obě verze Pythonu.
Příklad zdrojového úryvku
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def hello():
return "Ahoj Světe!"
if __name__ == "__main__":
app.run(debug=True)
Reference
- Extensions — Flask Documentation (1.1.x). flask.palletsprojects.com [online]. [cit. 2020-12-26]. Dostupné online.
- Steve Cohen's answer to What challenges has Pinterest encountered with Flask? - Quora. www.quora.com [online]. [cit. 2021-01-03]. Dostupné online.
- Rachel Sanders: Developing Flask Extensions - PyCon 2014 - YouTube. www.youtube.com [online]. [cit. 2021-01-03]. Dostupné online.
- Werkzeug. Pallets [online]. [cit. 2020-12-26]. Dostupné online.
- Template Engines. www.fullstackpython.com [online]. [cit. 2021-01-04]. Dostupné online. (anglicky)
- Jinja — Jinja Documentation (2.11.x). jinja.palletsprojects.com [online]. [cit. 2021-01-04]. Dostupné online.
- History — Pocoo. web.archive.org [online]. 2017-11-19 [cit. 2020-12-26]. Dostupné online.
- Python Developers Survey 2018 Results. JetBrains [online]. [cit. 2020-12-26]. Dostupné online. (anglicky)
- flask-restful/flask-restful. github.com [online]. 2021-01-04 [cit. 2021-01-04]. Original-date: 2012-10-12T00:08:51Z. Dostupné online.