官网:
中文版: 介绍-Jinja2中文文档
英文版: Template Designer Documentation — Jinja Documentation (2.11.x)
模板语法
1. 模板渲染
(1) app.py 准备数据
import json
from flask import Flask,render_template
import settings
app = Flask(__name__)
app.config.from_object(settings) # 加载配置文件
class Girl: # 自定义类
def __init__(self, name):
self.name = name
self.gender = "女"
def __str__(self):
return self.name
@app.route("/show")
def show():
name = "coco" # str
age = 18 # int
firends = ["A", "B", "C"] # list
dict1 = {"gift": "包"} # dict
# 创建对象
girlfriend = Girl("lili") # 自定义的类构建的类型: Girl类型
# 向模板传递数据
return render_template("index.html", name=name, age=age, firends=firends, dict1=dict1, girl=girlfriend)
if __name__ == '__main__':
app.run(port=8080)
(2) index.html 渲染数据
{{ name }}
{{ age }}
{{ firends.0 }} {#{{ list.0 }} 同 {{ list[0] }}#}
{{ dict1.gift }} {#{{ dict.key }} 同 {{dict.get(key) }}#}
{{ girl.name }} {#{{ gril.name }} 同 {{ 对象.属性 }}#}
2. if 判断 和 for 循环 和 loop 内置变量
(1)app.py 准备数据
from flask import Flask,render_template
import settings
app = Flask(__name__)
app.config.from_object(settings) # 加载配置文件
@app.route("/show")
def show():
girls = ["AA", "BBB", "CC"]
dict1 = [
{"name": "张三", "pwd": "123", "addr": "beijing", "phone": "13800000001"},
{"name": "李四", "pwd": "123", "addr": "shanghai", "phone": "13800000002"},
{"name": "王五", "pwd": "123", "addr": "guangzhou", "phone": "13800000003"},
]
return render_template("show.html", grils=girls, users=dict1)
if __name__ == '__main__':
app.run(port=8080)
(2) show.html渲染数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.a {
color: red;
}
</style>
</head>
<body>
<ul>
{#循环列表渲染数据#}
{% for gril in grils %}
<li>{{ gril }}</li>
{% endfor %}
</ul>
<hr>
<ul>
{#循环列表,根据条件增加样式#}
{% for gril in grils %}
{% if gril|length>=3 %}
<li class="a">{{ gril }}</li>
{% else %}
<li>{{ gril }}</li>
{% endif %}
{% endfor %}
</ul>
<hr>
<table border="1" cellpadding="0" cellspacing="0" width="50%">
{# 循环字典 #}
{% for user in users %}
<tr>
<td>{{ user.name }}</td>
<td>{{ user.pwd }}</td>
<td>{{ user.addr }}</td>
<td>{{ user.phone }}</td>
</tr>
{% endfor %}
</table>
<hr>
<table border="1" cellpadding="0" cellspacing="0" width="50%">
{# 循环字典,根据条件增加样式 #}
{% for user in users %}
<tr {% if loop.index==2 %}style="background-color:aqua"{% endif %}>
<td>{{ loop.index }}</td>
<td>{{ user.name }}</td>
<td>{{ user.pwd }}</td>
<td>{{ user.addr }}</td>
<td>{{ user.phone }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>