Flask 1.0

Ernesto Rico Schmidt am 23. Mai 2018

Es hat doch ein wenig länger gedauert, bis die Version 1.0 freigegeben wurde, aber Flask 1.0 ist endlich da!

Nach der Version 0.10, im Juni 2013, deutete alles darauf hin, dass die Version 1.0 kurz bevor stand. Flask hatte alles was es brauchte und eine Reihe vom der Community entwickelten Erweiteungen baten Pakete an, um mit Flask ernsthafte und vollständige Web-Applikationen zu entwickeln.

Aber es folgten noch die Version 0.11 in Mai 2016 und die Version 0.12 in Dezember 2016, neben insgesamt acht minor-Relesaes dazwischen, bis schließlich im April 2018, die Version 1.0 freigegeben wurde

Angefangen hat das Projekt als Aprilscherz 2010. Die Prämisse war es in ein einziges Python-Paket ein vollständig funktionierendes Micro-Web-Framework zu packen. Der Schmäh dabei: Das Paket hatte dafür alle seine Abhängigkeiten mit gezipt.

Eine Web-Applikation muss nicht immer eine Datenbank im Hintergrund haben, und wenn sie eine hat, muss sie nicht immer SQL sein. Aus diesem Grund verzichtet Flask auf eine Datenbankschicht. Jede Web-Applikation braucht eine Routing-System und fast alle brauchen Templates, und genau das packt Flask mit: Das WSGI-Toolkit Werkzeug und die Template-Engine Jinja2.

Armin Ronacher, der Autor von Flask, war zunächst überrascht über die Resonanz und in den darauf folgenden Jahren wurde aus dem Spaß etwas ernsthaftes. Der Erfolg von Flask und der Community, die sich um das Projekt aufgebaut hatte, war unübersehbar.

Heute ist Pinterest die wahrscheinlich bekannteste und größte Seite mit Flask.

Hello Flask

hello.py: Die minimalste Hello World-Variante in Flask:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

Wir installieren Flask in eine virtuelle Umgebung:

$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install Flask

Und starten die Applikation:

(venv) $ export FLASK_APP=hello.py
(venv) $ export FLASK_ENV=development
(venv) $ flask run
 * Serving Flask app "hello.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 285-404-637

Wenn wir jetzt Templates benutzen wollen, dann erweitern wir die Applikation ein wenig, sodass jetzt das Template hello.html dargestellt wird.

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('hello.html', name=name)

Das Template hello.html im Verzeichnis templateszeigt, abhängig davon, ob wir den Namen in der URL angegeben haben oder nicht, die Variable name, und wir werde mit dem Name oder nur als Welt begrüßt.

<!doctype html>
<title>Hello from Flask</title>
{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello, World!</h1>
{% endif %}

Das soll nur Appetit auf Flask machen. Von Hier kann man mit Hilfe der Erweiterungen, die Datenbaken, REST-Interfaces, Formulare und vieles mehr anbieten, elegante Web-Applikationen schreiben.

Die Dokumentation ist ausführlich!