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 steht nach einem |, und bei manchen folgt nach einem Doppelpunkt ein Argument:
{{ guest.name|upper }} {# ADA #}
{{ rating|floatformat:1 }} {# 4.7, when rating is 4.66 #}
{{ boxes|length }} box{{ boxes|pluralize:"es" }}{# ... #} ist ein Vorlagenkommentar und wird niemals angezeigt. Das Argument von floatformat gibt an, wie viele Dezimalstellen der Filter immer anzeigt. length zählt die Elemente einer Liste, und pluralize fügt eine Endung hinzu – standardmäßig 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
EinfachIn drinks.html:
- unter der
<h1>ein<p class="count">, das4 drinksoder bei einem Getränk1 drinkanzeigt; - in jedem
<li>eines Getränks, nach dem Namen, ein<span class="price">mit zwei Dezimalstellen:$3.50.
Drücke auf Ausführen und sieh dir /drinks/ an.
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