大家好,我是python网页后端flask的讲师geo
使用 Jinja2 模板引擎
Flask 使用 Jinja2 作为模板引擎,允许你在 HTML 文件中嵌入 Python 代码。
Jinja2 支持变量替换、条件语句和循环等基本功能。
创建 HTML 模板并传递数据
Flask 通过 render_template() 函数将 Python 数据传递到 HTML 模板中。
app.py:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
# 数据传递给模板
return render_template('index.html', name="John", age=30)
if __name__ == '__main__':
app.run(debug=True)
index.html
模板文件放在 templates/ 文件夹内
files/
│
├── app.py
├── templates/
│ ├── index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome</title>
</head>
<body>
<h1>Hello, !</h1>
<p>You are years old.</p>
</body>
</html>
在这个示例中,render_template() 函数会将 name 和 age 变量传递给 index.html,模板会动态地将这些变量替换成相应的值。
使用 Jinja2 的控制结构
你还可以在模板中使用控制结构,比如条件语句和循环。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>User Info</title>
</head>
<body>
<h1>Hello, !</h1>
<p>You are a minor.</p>
<h2>Your favorite foods:</h2>
<ul>
</ul>
</body>
</html>
在这个例子中,if 和 for 控制结构用于显示不同的内容或循环显示列表。
app.py
@app.route('/')
def index():
favorite_foods = ["Pizza", "Burger", "Ice Cream"]
return render_template('index.html', name="John", age=30, favorite_foods=favorite_foods)