85 lines
2.4 KiB
Plaintext
85 lines
2.4 KiB
Plaintext
from flask import Flask, render_template, request, redirect, url_for
|
||
👉 Wir importieren Funktionen aus dem Flask-Framework:
|
||
|
||
Flask: Hauptklasse, um unsere Web-App zu erstellen
|
||
|
||
render_template: zeigt HTML-Dateien an
|
||
|
||
request: ermöglicht Zugriff auf Formulardaten
|
||
|
||
redirect & url_for: nützlich für Weiterleitungen (werden hier zwar nicht benutzt, aber vorbereitet)
|
||
|
||
|
||
app = Flask(__name__)
|
||
👉 Wir erstellen eine Instanz der Flask-App, sie heißt hier einfach app.
|
||
__name__ sagt Flask, wo sich das aktuelle Skript befindet. Das ist nötig für Routing, Templating etc.
|
||
|
||
|
||
@app.route('/')
|
||
def home():
|
||
return render_template('index.html')
|
||
🟢 Route 1 – Startseite (/):
|
||
|
||
@app.route('/'): Flask soll diese Funktion ausführen, wenn jemand die Startseite aufruft (z. B. http://localhost:5000/)
|
||
|
||
render_template('index.html'): zeigt die HTML-Datei templates/index.html im Browser
|
||
|
||
|
||
@app.route('/kontakt', methods=['GET', 'POST'])
|
||
def kontakt():
|
||
🟢 Route 2 – Kontaktformular (/kontakt):
|
||
|
||
Diese Funktion verarbeitet zwei HTTP-Methoden:
|
||
|
||
GET: Zeigt das Formular an
|
||
|
||
POST: Verarbeitet die abgeschickten Formulardaten
|
||
|
||
|
||
if request.method == 'POST':
|
||
👉 Prüft, ob das Formular abgeschickt wurde (per POST)
|
||
|
||
|
||
name = request.form['name']
|
||
nachricht = request.form['nachricht']
|
||
👉 Holt sich die Formulardaten:
|
||
|
||
name: aus dem <input name="name">
|
||
|
||
nachricht: aus dem <textarea name="nachricht">
|
||
|
||
Diese Werte stehen im request.form-Objekt.
|
||
|
||
|
||
return render_template('thankyou.html', name=name)
|
||
👉 Zeigt eine Danke-Seite an und übergibt den Namen, damit man dort z. B. schreiben kann:
|
||
„Danke für deine Nachricht, Torben!“
|
||
|
||
|
||
return render_template('contact.html')
|
||
👉 Falls es kein POST war (also beim Aufruf über Link oder URL direkt):
|
||
Dann zeige das Kontaktformular an.
|
||
|
||
|
||
if __name__ == '__main__':
|
||
app.run(debug=True, port=5000)
|
||
🟢 Das ist der Startpunkt des Programms:
|
||
|
||
Nur wenn du app.py direkt startest (nicht importierst), wird app.run() ausgeführt
|
||
|
||
debug=True: Flask zeigt Fehler direkt im Browser an und startet automatisch neu, wenn du Änderungen machst
|
||
|
||
port=5000: Die App läuft unter http://localhost:5000
|
||
|
||
💬 Zusammenfassung:
|
||
Diese App hat:
|
||
|
||
Eine Startseite (/) → zeigt index.html
|
||
|
||
Eine Kontaktseite (/kontakt) mit Formular
|
||
|
||
Bei GET → zeigt Formular (contact.html)
|
||
|
||
Bei POST → zeigt Dankeseite (thankyou.html) mit dem eingegebenen Namen
|
||
|