test-area/fomular_bsp_email/explain.txt

85 lines
2.4 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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