模板过滤器
本课属于 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。
过滤器只会改变输出的内容,不会改变视图中的数据。
挑战
简单在 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 在线编辑器