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

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

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

## 关于 Jinja

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

| 定界符 | 用法 |
| --- | --- |
| <raw><…%><endraw></endraw></raw> | 陈述 |
| <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/)