Skip to content

Latest commit

 

History

History
58 lines (40 loc) · 2.09 KB

06.00.md

File metadata and controls

58 lines (40 loc) · 2.09 KB

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,过滤器使用管道字符 |

模板支持多种内建的块标签,并且你可以写你自己的标签。

links