{% raw %}
Jinja2 模板引擎
Jinja2 是 Python 的模板引擎。 将数据呈现到网页时,可以使用它。 对于您访问的每个链接,您都希望使用格式显示数据。 通过使用模板引擎,我们可以将显示逻辑(html,css)与实际的 Python 代码分开。 让我们从一个例子开始
关于 Jinja
Jinja2 模板只是一个文本文件,不需要特定的扩展名,例如.html
,.xml
。模板可能包含标签和特殊定界符:
定界符 | 用法 |
---|---|
{% ... %} |
语句 |
{{ ... }} |
要打印到模板输出的表达式 |
{# ... #} |
注释未包含在模板输出中 |
# ... # |
行语句 |
在上面的示例中,我们有两个语句和一个表达式。 我们还没有包含任何注释。
基本模板和子模板
Jinja2 模板可以扩展基本模板。 在包含许多站点的网页上,您可能希望这些页面看起来相似。 在/templates/
中,使用以下代码创建一个名为base.html
的文件:
{% 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
更改为:
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
<style type="text/css">
.important { color: #336699; }
</style>
{% endblock %}
{% block content %}
<h1>Users</h1>
<p class="important"></p>
<ul>
{% for user in users %}
<li>{{ user }}</li>
{% endfor %}</ul>
{% endblock %}
通过以下方式重新启动应用程序:
python app.py
* Running on http://0.0.0.0:8080/
输出:
Flask Jinja 模板引擎
{% endraw %}