Menu
CoddyTech

テンプレートフィルター

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。

フィルターが変更するのは出力される内容だけで、ビュー内のデータは変更しません。

challenge icon

チャレンジ

簡単

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プレイグラウンド