テンプレートフィルター
CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 15/23。
ドリンクの一覧にはドリンクの数を表示し、$3.50のように価格を表示する必要がありますが、{{ drink.price }}は3.5を出力します。フィルターは、テンプレートが値を出力するときにその値を変更します。フィルターは|の後に続き、コロンの後に引数を取るものもあります:
{{ guest.name|upper }} {# ADA #}
{{ 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/を確認します。
自分で試してみよう
<!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プレイグラウンド