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