Geburtstage
Aufgabe
Erstellen Sie eine Webanwendung, um die Geburtstage von Freunden zu verfolgen.

Bevor Sie beginnen
Öffnen Sie VS Code entsprechend Ihrem Setup, klicken Sie auf Ihr Terminalfenster und führen Sie cd aus. Die Eingabeaufforderung Ihres Terminalfensters sollte ungefähr wie folgt aussehen:
$Führen Sie den Befehl
wget https://inf.zone/download/exercises/09/birthdays.zipaus, um in Ihrem Codespace die ZIP birthdays.zip herunterzuladen.
Nun können Sie
unzip birthdays.zipausführen, um die ZIP in den Ordner birthdays zu entpacken.
Sie benötigen die ZIP-Datei nicht mehr, daher können Sie den Befehl
rm birthdays.zipausführen und bei der Aufforderung mit „y“ gefolgt von der Eingabetaste antworten, um die heruntergeladene ZIP-Datei zu entfernen.
Geben Sie nun den Befehl
cd birthdaysein und drücken Sie anschließend die Eingabetaste, um in dieses Verzeichnis zu wechseln (d. h., es zu öffnen). Ihre Eingabeaufforderung sollte nun wie folgt aussehen:
birthdays/ $Falls alles erfolgreich war, führen Sie den folgenden Befehl aus:
lsSie sollten nun die folgenden Dateien und Ordner sehen:
app.py birthdays.json static/ templates/Falls es zu Problemen kommt, wiederholen Sie dieselben Schritte und versuchen Sie herauszufinden, wo ein Fehler aufgetreten sein könnte!
Erklärung
In der Datei app.py finden Sie den Beginn einer Flask-Webanwendung. Die Anwendung verfügt über eine Route (/), die sowohl POST-Anfragen (im Abschnitt nach dem if) als auch GET-Anfragen (im Abschnitt nach dem else) akzeptiert. Derzeit wird bei einer GET-Anfrage an die Route / die Vorlage index.html gerendert. Bei einer POST-Anfrage an die Route / wird der Benutzer über eine GET-Anfrage zurück zu / umgeleitet. Ebenfalls wird sichergestellt, dass brithdays.json existiert, worin sie die Geburtstage speichern können.
Im Verzeichnis static befindet sich die Datei styles.css, die den CSS-Code für diese Webanwendung enthält. Es ist nicht notwendig, diese Datei zu bearbeiten, aber Sie können dies gerne tun, wenn Sie möchten.
Im Verzeichnis templates befindet sich eine Datei namens index.html, die gerendert wird, wenn der Benutzer Ihre Webanwendung aufruft.
Implementierungsdetails
Vervollständigen Sie die Implementierung einer Webanwendung, mit der Benutzer Geburtstage speichern und verfolgen können.
Wenn die Route
/perGET-Anfrage aufgerufen wird, sollte Ihre Webanwendung eine Tabelle anzeigen, die alle Personen in Ihrer Datenbank zusammen mit ihren Geburtstagen auflistet:- Fügen Sie zunächst in der Datei
app.pyLogik für die Verarbeitung vonGET-Anfragen hinzu, um die gespeicherten Geburtstage ausbirthdays.jsonzu laden. Übergeben Sie alle diese Daten an Ihreindex.html-Vorlage. - Fügen Sie anschließend in der Datei
index.htmlLogik hinzu, um jeden Geburtstag als Zeile in der Tabelle darzustellen. Jede Zeile sollte zwei Spalten haben: eine für den Namen der Person und eine für deren Geburtstag.
- Fügen Sie zunächst in der Datei
Wenn die Route
/perPOST-Anfrage aufgerufen wird, sollte Ihre Webanwendung einen neuen Geburtstag inbirthdays.jsonhinzufügen und die Indexseite neu rendern:- Fügen Sie zunächst in der Datei
index.htmlein HTML-Formular hinzu. Das Formular sollte es den Benutzern ermöglichen, einen Namen, einen Geburtsmonat und einen Geburtstagstag einzugeben. Achten Sie darauf, dass das Formular an/gesendet wird (alsaction) und die MethodePOSTverwendet. - Fügen Sie dann in der Datei
app.pyLogik für die Verarbeitung vonPOST-Anfragen hinzu, um eine neuen Eintrag in das Geburtstagsliste einzufügen, basierend auf den vom Benutzer bereitgestellten Daten. Überlegen sie sich hierfür eine geeignete Methode die Daten zu modellieren, um sie anschließend in der Dateibirthdays.jsonspeichern zu können.
- Fügen Sie zunächst in der Datei
Optional können Sie außerdem:
- Die Möglichkeit hinzufügen, Geburtstage zu löschen und zu bearbeiten. (Hierfür lohnt es sich vielleicht die gespeicherten Geburtstage mit einer Id zu versehen.)
- Eine client- und serverseitige Validierung der Daten hinzufügen.
Testing
Es gibt keinen check50 für diese Aufgabe! Aber stellen Sie sicher, dass Sie Ihre Webanwendung testen, indem Sie einige Geburtstagsdaten hinzufügen und überprüfen, dass die Daten wie erwartet in Ihrer Tabelle angezeigt werden.
Führen Sie den Befehl flask run in Ihrem Terminal aus, während Sie sich im Verzeichnis birthdays befinden, um einen Webserver zu starten, der Ihre Flask-Anwendung bereitstellt.