Vytvořte zdrojový kód v Pythonu a nazvěte ho např. app.py
.
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return '<h1>Hello, World!</h1>'
Ve výše uvedeném bloku kódu nejprve importujete objekt Flask z balíčku flask. Poté pomocí něj vytvoříte instanci aplikace Flask a dáte jí jméno app. Předáte speciální proměnnou name
, která obsahuje název aktuálního modulu Pythonu. Toto jméno říká instanci, kde se nachází; potřebujete ho, protože Flask v zákulisí nastavuje některé cesty.
Jakmile vytvoříte instanci aplikace, můžete ji použít ke zpracování příchozích webových požadavků a odesílání odpovědí uživateli. @app.route
je dekorátor, který změní běžnou funkci jazyka Python na funkci Flask view
, která převede návratovou hodnotu funkce na odpověď HTTP, kterou zobrazí klient HTTP, například webový prohlížeč. Funkci @app.route() předáte hodnotu '/', která znamená, že tato funkce bude odpovídat na webové požadavky na adresu URL /, což je hlavní adresa URL.
Funkce zobrazení hello()
vrátí jako odpověď HTTP řetězec '<h1>Hello, World!</h1>'.
Nyní máte jednoduchou aplikaci Flask v souboru Python s názvem app.py, v dalším kroku aplikaci spustíte a uvidíte výsledek funkce zobrazení hello()
vykreslený ve webovém prohlížeči.
Aplikaci napsanou pomocí frameworku Flask lze spustit dvěme způsoby.
Nejprve v adresáři flask_app s aktivovaným virtuálním prostředím sdělte Flasku, kde má najít aplikaci (ve vašem případě app.py), pomocí proměnné prostředí FLASK_APP následujícím příkazem (v systému Windows použijte set místo export):
export FLASK_APP=app
Poté pomocí proměnné prostředí FLASK_ENV určete, že chcete aplikaci spustit ve vývojovém režimu (abyste mohli pomocí ladicího programu zachytit chyby):
export FLASK_ENV=development
Nakonec aplikaci spusťte pomocí příkazu flask run:
flask run
Někdy je výhodné spustit aplikaci bez prostředí Flask, např. přímo v editoru. Pak je třeba vytvořit plnohodnotnou aplikaci, která bude obsahovat hlavní metodu, ve které se vyvořená aplikace spustí.
if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=True)
Dalším parametrem metody route()
je možné specifikovat HTTP metodu použitou při dotazu
@app.route('/', methods=["GET"])
Rozšiřte aplikaci o následující kód
from markupsafe import escape # ... @app.route('/capitalize/<word>/') def capitalize(word): return '<h1>{}</h1>'.format(escape(word.capitalize()))
V URL může být i více proměnných:
@app.route('/add/<int:n1>/<int:n2>/') def add(n1, n2): return '<h1>{}</h1>'.format(n1 + n2)
from flask import Flask, request, jsonify app = Flask(__name__) countries = [ {"id": 1, "name": "Thailand", "capital": "Bangkok", "area": 513120}, {"id": 2, "name": "Australia", "capital": "Canberra", "area": 7617930}, {"id": 3, "name": "Egypt", "capital": "Cairo", "area": 1010408}, ] @app.route("/countries", methods=['GET']) def get_countries(): return jsonify(countries) @app.route("/countries", methods=['POST']) def add_country(): if request.is_json: name = request.json.get('name') # kompletni JSON: request.get_json() else: name = request.form.get('name') return '<h1>{}</h1>'.format(name)
Připravte ve frameworku Flask aplikaci, která bude sloužit pro ukládání dat z jednoduchého teploměru. Rozhraní umožňuje následující operace:
N
vložených hodnot
N
prvních hodnot