# Jinja2 模板引擎

> 原文： [https://pythonspot.com/jinja2-template-engine/](https://pythonspot.com/jinja2-template-engine/)

Jinja2 是 Python 的模板引擎。 将数据呈现到网页时，可以使用它。 对于您访问的每个链接，您都希望使用格式显示数据。 通过使用模板引擎，我们可以将显示逻辑（html，css）与实际的 Python 代码分开。 让我们从一个例子开始

## 关于 Jinja

Jinja2 模板只是一个文本文件，不需要特定的扩展名，例如.html，.xml。
模板可能包含标签和特殊定界符：

| 定界符 | 用法 |
| --- | --- |
| &lt;raw&gt;&lt;…％&gt;&lt;endraw&gt;&lt;/endraw&gt;&lt;/raw&gt; | 陈述 |
| &lt;raw&gt;&lt;…&gt; &gt;&lt;endraw&gt;&lt;/endraw&gt;&lt;/raw&gt; | 要打印到模板输出的表达式 |
| &lt;raw&gt;&lt;…＃&gt;&lt;endraw&gt;&lt;/endraw&gt;&lt;/raw&gt; | 注释未包含在模板输出中 |
| &lt;raw&gt;＃…##&lt;endraw&gt;&lt;/endraw&gt;&lt;/raw&gt; | 行语句 |

In the example above we have two statements and one expression.  We have not included any comments.

## 基本模板和子模板

Jinja2 模板可以扩展基本模板。 在包含许多站点的网页上，您可能希望这些页面看起来相似。 在/ templates /中，使用以下代码创建一个名为 base.html 的文件：

```py

<block head %>
     	 	<link rel="stylesheet" href="style.css">
    <title><block title %><endblock %> - My Webpage</title>
<endblock %>
<div id="content"><block content %><endblock %></div>
<div id="footer">
        <block footer %>
Copyright 2015 by <a href="https://pythonspot.com/">pythonspot</a>.
<endblock %></div>

```

_ 我们没有设置 style.css，但是您可以设置一个。_ 将/templates/user.html 更改为：

```py
<extends "base.html" %>
<block title %>Index<endblock %>
<block head %>
<#123; super() >>
<style type="text/css">
        .important <olor: #336699; ><br />
    </style>

<endblock %>
<block content %>
<h1>Users</h1>
<p class="important"></p>

<ul>
      <for user in users %>
 	<li><#123; user >></li>
<endfor %></ul>
<endblock %>

```

通过以下方式重新启动应用程序：

```py
python app.py
* Running on http://0.0.0.0:8080/

```

输出：

![template jinja](img/b183ab9d09b4460a2626a0004e1f1b00.jpg)

Flask Jinja template engine

[下载烧瓶示例](https://pythonspot.com/download-flask-examples/)