Vorlagenfilter
Teil des Abschnitts Django-Grundlagen der Django-Journey von Coddy. Lektion 15 von 23.
Die Getränkeliste sollte angeben, wie viele Getränke es gibt, und Preise wie $3.50 anzeigen, aber {{ drink.price }} gibt 3.5 aus. Ein Filter ändert einen Wert, während die Vorlage ihn ausgibt. Er folgt auf ein |, und bei manchen steht nach einem Doppelpunkt ein Argument:
{{ rating|floatformat:1 }} {# 4.7, when rating is 4.66 #}
{{ boxes|length }} box{{ boxes|pluralize:"es" }}{# ... #} ist ein Vorlagenkommentar und wird nie angezeigt. Das Argument von floatformat gibt an, wie viele Dezimalstellen immer angezeigt werden. length zählt die Elemente einer Liste, und pluralize fügt eine Endung hinzu: s, sofern du keine andere angibst, wenn die Anzahl nicht genau eins beträgt: 3 boxes, 1 box.
Filter ändern nur, was ausgegeben wird, niemals die Daten in deiner Ansicht.
Aufgabe
EinfachFüge in drinks.html unter der <h1> ein <p class="count"> hinzu, in dem 4 drinks steht, oder 1 drink, wenn es nur ein Getränk gibt. Füge in jedem <li> für ein Getränk nach dem Namen ein <span class="price"> mit zwei Dezimalstellen hinzu, zum Beispiel $3.50.
Öffne /drinks/: Dort steht 4 drinks, und der Latte kostet $3.50.
Probier es selbst
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Our Drinks</title>
</head>
<body>
<h1>Our Drinks</h1>
<ul>
{% for drink in drinks %}
<li class="drink">
{{ drink.name }}
{% if drink.sold_out %}
<span class="sold-out">Sold out</span>
{% endif %}
</li>
{% empty %}
<li>No drinks today.</li>
{% endfor %}
</ul>
</body>
</html>
Alle Lektionen in Django-Grundlagen
1Deine erste Django-Website
Hallo, DjangoEine zweite Seite4Layouts und statische Dateien
Template-VererbungEin Titel für jede SeiteÜbe selbstständig: Django-Playground