"Den Abschluss der Datei bildet in diesem Fall die Startanweisung für unsere Anwendung."
"Den Abschluss der Datei bildet in diesem Fall die Startanweisung für unsere Anwendung. Diese besteht aus dem Aufruf der Methode `run()` auf dem `app`-Objekt. Dabei kann der Parameter `host` übergeben werden, durch den der Zugriff auf den Entwicklungsserver reglementiert werden kann. `\"0.0.0.0\"` bedeutet, dass alle IP-Adressen erlaubt sind."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)\n",
Wir gehen davon aus, dass in unserem System das Modul [Flask](http://flask.pocoo.org/) installiert ist. Wenn Sie mit [Anaconda](https://www.anaconda.com/) arbeiten, können Sie nachsehen, dass es standardmäßig [in den Paketen enthalten ist](https://docs.anaconda.com/anaconda/packages/py3.6_linux-64).
Sofern Flask vorhanden ist, können wir es für unsere Anwendung importieren.
%% Cell type:code id: tags:
``` python
fromflaskimportFlask
```
%% Cell type:markdown id: tags:
Anschließend erzeugen wir eine Variable, in der wir eine Instanz des Flask-Objekts speichern.
%% Cell type:code id: tags:
``` python
app=Flask(__name__)
```
%% Cell type:markdown id: tags:
Nun definieren wir als erstes eine sogenannte *Route*. Wenn unsere Anwendung erkennt, dass die eingebene URL dieser Route entspricht, leitet sie den Request an eine zugehörige Funktion weiter.
Die Definition einer Route in Flask folgt einem einfachen Vorgehen. Dabei steht in den Klammern das konkrete Muster, das in der URL vorhanden sein muss. Anschließend folgt die Definition der Funktion, die aufgerufen wird, wenn die Route greift. Diese Funktion sollte einen sinnvollen und selbstdokumentierenden Namen tragen.
In diesem Fall gibt der eingebaute Webserver in Flask eine sehr einfache Antwort (*Response*), nämlich nur einen einfachen String. Zu den Grundlagen von *HTTP* und dem Konzept von Anfrage/Antwort (*Request/Response*) vgl. z.B. Meinel & Sack (2004, S. 735 ff.).
Den Abschluss der Datei bildet in diesem Fall die Startanweisung für unsere Anwendung.
Den Abschluss der Datei bildet in diesem Fall die Startanweisung für unsere Anwendung. Diese besteht aus dem Aufruf der Methode `run()` auf dem `app`-Objekt. Dabei kann der Parameter `host` übergeben werden, durch den der Zugriff auf den Entwicklungsserver reglementiert werden kann. `"0.0.0.0"` bedeutet, dass alle IP-Adressen erlaubt sind.
%% Cell type:code id: tags:
``` python
if__name__=='__main__':
app.run(host="0.0.0.0")
```
%% Output
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
- Wie können Sie erreichen, dass die Anwendung eine korrekte HTML-Seite ausgibt, wenn die Homepage aufgerufen wird?
- Was müssen Sie tun, um noch eine weitere Seite unter der URL `/team` aufrufen zu können?
- Wenn Sie die Website unter http://localhost:5000 aufrufen, loggt der Entwicklungsserver Ihre Aktionen mit (s.o.). Was bedeuten die Informationen in den einzelnen Zeilen?
**Tipp:** Erstellen Sie eine Kopie dieses Notebooks, bevor Sie es verändern! Fortgeschrittene können eine Branch in der Versionskontrolle erstellen.
%% Cell type:markdown id: tags:
## Referenzen
- Meinel, C. & Sack, H. (2004). WWW: Kommunikation, Internetworking, Web-Technologien. Berlin u.a.: Springer.
%% Cell type:markdown id: tags:
**Anmerkungen:** Damit Änderungen an der Anwendung wirksam werden, ist der Entwicklungsserver von Flask neu zu starten. Dies erfolgt im Kontext von Jupyter Notebook, indem der *Kernel* neu gestartet wird und alle Zellen erneut ausgeführt werden. Ein Abkürzung dafür stellt der Menüeintrag *Kernel -> Restart & Run All* dar. Anschließend ist je nach Leistungsfähigkeit des Hostrechners einige Sekunden zu warten, bis der Entwicklungsserver wieder erreichbar ist.