test-area ergänzt

This commit is contained in:
TD589 2025-03-29 17:23:45 +01:00
commit 8f3427c468
17 changed files with 403 additions and 0 deletions

18
fomular_bsp/app.py Normal file
View File

@ -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)

84
fomular_bsp/explain.txt Normal file
View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

40
fomular_bsp_email/app.py Normal file
View File

@ -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)

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

9
test1/app.py Normal file
View File

@ -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)

24
test1/static/style.css Normal file
View File

@ -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;
}

View File

@ -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.

14
würfel/app.py Normal file
View File

@ -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)

3
würfel/simulation.py Normal file
View File

@ -0,0 +1,3 @@
def würfeln():
from random import randint
return randint(1, 6)

View File

@ -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>