test-area ergänzt
This commit is contained in:
commit
8f3427c468
|
|
@ -0,0 +1,18 @@
|
||||||
|
from flask import Flask, render_template, request, redirect, url_for
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/')
|
||||||
|
def home():
|
||||||
|
return render_template('index.html')
|
||||||
|
|
||||||
|
@app.route('/kontakt', methods=['GET', 'POST'])
|
||||||
|
def kontakt():
|
||||||
|
if request.method == 'POST':
|
||||||
|
name = request.form['name']
|
||||||
|
nachricht = request.form['nachricht']
|
||||||
|
return render_template('thankyou.html', name=name)
|
||||||
|
return render_template('contact.html')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(debug=True, port=5000)
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
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
|
||||||
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Kontakt</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Kontaktformular</h1>
|
||||||
|
<form action="{{ url_for('kontakt') }}" method="post">
|
||||||
|
<label>Name:<br>
|
||||||
|
<input type="text" name="name" required>
|
||||||
|
</label><br><br>
|
||||||
|
<label>Nachricht:<br>
|
||||||
|
<textarea name="nachricht" rows="5" required></textarea>
|
||||||
|
</label><br><br>
|
||||||
|
<button type="submit">Senden</button>
|
||||||
|
</form>
|
||||||
|
<a href="{{ url_for('home') }}">Zurück zur Startseite</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Startseite</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Willkommen auf unserer Mini-Seite</h1>
|
||||||
|
<a href="{{ url_for('kontakt') }}">Zum Kontaktformular</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Danke!</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Danke für deine Nachricht, {{ name }}!</h1>
|
||||||
|
<a href="{{ url_for('home') }}">Zurück zur Startseite</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
from flask import Flask, request, render_template
|
||||||
|
import smtplib
|
||||||
|
from email.message import EmailMessage
|
||||||
|
|
||||||
|
app = Flask(__name__)#
|
||||||
|
|
||||||
|
@app.route('/')
|
||||||
|
def home():
|
||||||
|
return render_template('index.html')
|
||||||
|
|
||||||
|
@app.route('/kontakt', methods=['GET', 'POST'])
|
||||||
|
def kontakt():
|
||||||
|
if request.method == 'POST':
|
||||||
|
name = request.form['name']
|
||||||
|
nachricht = request.form['nachricht']
|
||||||
|
|
||||||
|
# ✉️ E-Mail vorbereiten
|
||||||
|
empfaenger = "tdpain5@gmail.com"
|
||||||
|
absender = "noreply@example.com"
|
||||||
|
passwort = "DEIN_APP_PASSWORT"
|
||||||
|
|
||||||
|
msg = EmailMessage()
|
||||||
|
msg['Subject'] = f"Neue Nachricht von {name}"
|
||||||
|
msg['From'] = absender
|
||||||
|
msg['To'] = empfaenger
|
||||||
|
msg.set_content(nachricht)
|
||||||
|
|
||||||
|
# 📤 E-Mail senden
|
||||||
|
try:
|
||||||
|
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
|
||||||
|
smtp.login(absender, passwort)
|
||||||
|
smtp.send_message(msg)
|
||||||
|
return "E-Mail erfolgreich gesendet!"
|
||||||
|
except Exception as e:
|
||||||
|
return f"Fehler beim Senden: {e}"
|
||||||
|
|
||||||
|
return render_template('contact.html')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=5000, debug=True)
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
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
|
||||||
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Kontakt</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Kontaktformular</h1>
|
||||||
|
<form action="{{ url_for('kontakt') }}" method="post">
|
||||||
|
<label>Name:<br>
|
||||||
|
<input type="text" name="name" required>
|
||||||
|
</label><br>
|
||||||
|
<label>Nachricht:<br>
|
||||||
|
<textarea name="nachricht" required></textarea>
|
||||||
|
</label><br>
|
||||||
|
<button type="submit">Senden</button>
|
||||||
|
</form>
|
||||||
|
<a href="{{ url_for('home') }}">Zurück zur Startseite</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Startseite</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Willkommen auf unserer Mini-Seite</h1>
|
||||||
|
<a href="{{ url_for('kontakt') }}">Zum Kontaktformular</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Danke!</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Danke für deine Nachricht, {{ name }}!</h1>
|
||||||
|
<a href="{{ url_for('home') }}">Zurück zur Startseite</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
from flask import Flask, render_template
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/', methods=['GET'])
|
||||||
|
def home():
|
||||||
|
return render_template('index.html')
|
||||||
|
|
||||||
|
app.run(host='0.0.0.0', port=5000, debug=True)
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
h1 {
|
||||||
|
color: rgb(22, 156, 145);
|
||||||
|
}
|
||||||
|
|
||||||
|
progress {
|
||||||
|
width: 100%;
|
||||||
|
height: 20px;
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
border-radius: 5px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
background-color: grey ;
|
||||||
|
opacity:0.75;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 10px solid #c50909;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
background-color:khaki;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport">
|
||||||
|
<title>Testseite</title>
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Start
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Kontakte
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Konto
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<h1>Willkommen auf unserer Testseite</h1>
|
||||||
|
<p>Auf dieser Website machen wir viel <span style="color: red; font-weight: bold;">Quatsch</span> und Blödsinn zum testen.</p>
|
||||||
|
<h2>Fortschritt der Website</h2>
|
||||||
|
<p><progress value="5" max="100"></progress></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,14 @@
|
||||||
|
from flask import Flask, render_template
|
||||||
|
import simulation # <– eigene Logik einbinden
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/')
|
||||||
|
def index():
|
||||||
|
zahl = simulation.würfeln()
|
||||||
|
return render_template('index.html', zahl=zahl)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=5000, debug=True, use_reloader=False)
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
def würfeln():
|
||||||
|
from random import randint
|
||||||
|
return randint(1, 6)
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Würfelspiel</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Du hast eine {{ zahl }} gewürfelt!</h1>
|
||||||
|
<a href="/">Nochmal würfeln</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue