模板是一个string文本,它用来分离一个文档的展现和数据,模板定义了placeholder和表示多种逻辑的tags来规定文档如何展现,通常模板用来输出HTML。
让我们来看看一个简单的模板例子:
<html>
<head><title>Ordering notice</title></head>
<body>
<p>Dear {{ person_name }},</p>
<p>Thanks for placing an order from {{ company|upper }}. It's scheduled to
ship on {{ ship_date }}.</p>
<p>Here are the items you've ordered:</p>
<ul>
{% for item in item_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
{% if ordered_warranty %}
<p>Your warranty information will be included in the packaging.</p>
{% endif %}
<p>Sincerely,<br />{{ company }}</p>
</body>
</html>
这个模板本质上是HTML,但是夹杂了一些变量和模板标签:
1、用 {{}}
包围的是变量,如 {{person_name}}
,这表示把给定变量的值插入,如何指定这些变量的值我们即将说明
2、用 {%%}
包围的是块标签,如 {% if ordered_warranty %}
块标签的含义很丰富,它告诉模板系统做一些事情
在这个例子模板中包含两个块标签:
for
标签表现为一个简单的循环结构,让你按顺序遍历每条数据if
标签则表现为逻辑的if语句
在这里,上面的标签检查 ordered_warranty 变量的值是否为 true。
如果是 true,模板系统会显示 {% if ordered_warranty %}
和 {% endif %}
之间的内容,否则模板系统不会显示这些内容。
模板系统也支持 {%else%}
等其它逻辑语句。
3、上面还有一个过滤器的例子,过滤器是改变变量显示的方式
上面的例子中 {{ company|upper }}
把 company 变量传递给过滤器,upper
过滤器将 company 值大写。
类似于Unix,过滤器使用管道字符 |
。
模板支持多种内建的块标签,并且你可以写你自己的标签。