テンプレートフィルター
CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 15/23。
ドリンクのリストにはドリンクの数を表示し、$3.50のような価格を表示する必要がありますが、{{ drink.price }}は3.5を出力します。フィルターは、テンプレートが値を出力するときにその値を変更します。フィルターは|の後に続き、コロンの後に引数を取るものもあります。
{{ rating|floatformat:1 }} {# 4.7, when rating is 4.66 #}
{{ boxes|length }} box{{ boxes|pluralize:"es" }}{# ... #}はテンプレートコメントで、表示されることはありません。floatformatの引数は、常に表示する小数の桁数です。lengthはリストの項目数を数え、pluralizeは、個数がちょうど1でない場合に語尾を追加します。別の語尾を指定しない限り、追加されるのはsです。例:3 boxes、1 box。
フィルターが変更するのは出力される内容だけで、ビュー内のデータは変更しません。
チャレンジ
簡単drinks.htmlで、<h1>の下に、4 drinksと表示する<p class="count">を追加します。ドリンクが1つの場合は、1 drinkと表示します。各ドリンクの<li>では、名前の後に、小数点以下2桁で価格を表示する<span class="price">を追加します。例:$3.50。
/drinks/を開くと、4 drinksと表示され、Latteの価格は$3.50です。
自分で試してみよう
<!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>
Djangoの基礎のすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド