模版渲染
6 模版渲染
模板是一个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,过滤器使用管道字符 |。
模板支持多种内建的块标签,并且你可以写你自己的标签。
