# Django-Projekt: fruit_app 2 - Templates ## Projektstruktur 1. Erstelle in deiner App `fruit_app` einen Ordner `templates/fruit_app/`, um später deine HTML-Templates dort abzulegen. 2. Lege in der App `fruit_app` zusätzlich einen Ordner `static/fruit_app/` an mit Unterordnern für `css/` und `img/` für die Bilder der jeweiligen Früchte (nimm gerne die aus dem Zip oder lade dir eigene herunter). ## Templates 3. Erstelle in `templates/fruit_app/` eine Datei `base.html` mit einem HTML-Grundlayout. Definiere darin zwei Platzhalter-Blöcke mit `{% block %}`: einen namens `"content"` und einen namens `"infos"`. Hinweis: Lege dafür keine eigene View oder URL an. 4. Erstelle im selben Ordner die Datei `fruitlist.html`. Verknüpfe sie anschließend in deiner bestehenden View `send_fruits` über die `render()`-Funktion. 5. Verwende `{% extends %}`, um von `base.html` zu erben, und fülle den Block `"content"` mit einer Liste der Früchte (Name, Farbe, Gewicht). 6. Erstelle zusätzlich eine Datei `header.html`. Binde diese in deine `base.html` mit `{% include %}` ein. 7. Binde das Bild aus dem Zip-Ordner im Header mit dem `{% static %}`-Tag als `img`-Element ein. >Hinweis: Sollten deine Bilder aus den static Files nicht geladen werden nutze ```bash python manage.py runserver --insecure ``` --- # Zusatzaufgabe Teil 1 (Projekt designen und erweitern) 1. Erstelle eine `info.html`, die mit `extends` von der `base.html` erbt, und fülle den “infos”-Block mit einem kleinen eigenen Text über Früchte. Siehst du schon etwas im Browser? 2. Die `info.html` soll nun über `"/info"` erreichbar sein, schreibe den nötigen Code (View + Url mit Name). 3. Nutze nun ein `a`-Tag, um aus dem `fruitlist`-Template auf die Info-Seite zu verlinken. 4. Erstelle eine `style.css` in dem dafür vorgesehenen Ordner und verlinke diese in der `base.html` mit dem `{% static %}`-Tag. Verändere testweise über CSS die Schriftfarbe und Größe von `h1` / `h2` etc. 5. Erweitere deine `fruits`-Liste im View (`views.py`) um einen neuen Key namens `img`, der den Pfad zum jeweiligen Fruchtbild enthält. 6. Füge zu jedem Frucht-Objekt zusätzlich ein Boolean-Feld `is_ordered` hinzu. Der Wert soll für manche Früchte `True`, für andere `False` sein. 7. Passe dein Template `fruitlist.html` so an, dass alle Früchte mit `is_ordered: True` in einer Liste mit der Überschrift `"Bestellt"` angezeigt werden, alle Früchte mit `is_ordered: False` in einer Liste mit der Überschrift `"Nicht bestellt"`. Nutze dafür zwei separate `for`-Blöcke und `if`-Bedingungen. # Zusatzaufgabe Teil 2 (eigene 404): 1. Erstelle eine eigene `404.html`, die z. B. ein Bild oder GIF anzeigt und kreativer ist als die Standard-404-Seite, die du in Zukunft nutzen kannst. 2. Füge den globalen `static/` Ordner zu `STATICFILES_DIRS` in der `settings.py` hinzu. 3. Teste die 404-Seite, indem du `DEBUG = False` in `settings.py` setzt. Hinweis: Sollten deine Files aus dem `static`-Ordner nicht mehr geladen werden, starte den Server mit: ```bash python manage.py runserver --insecure ```