50.md 2.3 KB
Newer Older
W
init  
wizardforcel 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
# Jinja2 模板引擎

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

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

## 关于 Jinja

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

| 定界符 | 用法 |
| --- | --- |
W
wizardforcel 已提交
14
| <raw><…%><endraw></endraw></raw> | 语句 |
W
init  
wizardforcel 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| <raw><> ><endraw></endraw></raw> | 要打印到模板输出的表达式 |
| <raw><…#><endraw></endraw></raw> | 注释未包含在模板输出中 |
| <raw>#…##<endraw></endraw></raw> | 行语句 |

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/)