使用 Jinja2 模板引擎在 Flask 中动态渲染页面
Flask 是一个轻量级的 Python Web 框架,它集成了功能强大的 Jinja2 模板引擎,用于动态生成 HTML 页面。Jinja2 支持变量插值、循环、条件语句等操作,可以大幅简化动态页面的渲染。
本文将带你了解如何在 Flask 中使用 Jinja2 模板引擎,以及结合实际案例实现动态页面渲染。
一、Jinja2 模板引擎简介
1.1 Jinja2 的主要功能
- 变量插值:将后端数据动态渲染到页面。
- 控制结构:支持
if
、for
等控制流语法。 - 模板继承:支持模板复用和页面结构组织。
- 过滤器:对数据进行格式化处理(例如日期格式化、字符串处理等)。
二、Flask 项目中使用 Jinja2 模板
2.1 Flask 中的模板目录结构
Flask 默认会在项目根目录下的 templates 文件夹中查找模板文件。目录结构如下:
project/
│
├── app.py # Flask 应用
├── templates/ # 存放 HTML 模板
│ ├── base.html # 基础模板
│ ├── index.html # 首页模板
│ ├── about.html # 其他页面模板
2.2 示例代码:动态渲染页面
2.2.1 创建 Flask 应用
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html', title="首页", username="全栈探索者")
@app.route('/about')
def about():
return render_template('about.html', title="关于我们", description="我们致力于技术分享!")
if __name__ == '__main__':
app.run(debug=True)
2.2.2 编写 HTML 模板
(1) templates/base.html
基础模板负责定义页面的通用结构,例如头部、导航栏、页脚等。
<!DOCTYPE html>
<html lang="en">
<head>