---
# System prepended metadata

title: 'Django-Projekt: fruit_app 2 - Templates'

---

# 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
```