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 会添加词尾,除非你指定其他词尾,否则添加 s。当数量不恰好为 1 时会添加词尾:3 boxes、1 box。

过滤器只会改变输出的内容,不会改变视图中的数据。

challenge icon

挑战

简单

在 drinks.html 中,在 <h1> 下方添加一个 <p class="count">,显示 4 drinks;只有一杯时显示 1 drink。在每种饮品的 <li> 中,名称后添加一个 <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 在线编辑器