Python 中使用 HTML 模板的完整指南
在 Python Web 开发中,将业务逻辑与页面展示分离是构建可维护应用的关键。HTML 模板引擎允许开发者在 HTML 文件中嵌入 Python 代码逻辑,从而动态生成网页内容。本文将详细介绍 Python 中最常用的两个模板引擎:Jinja2 和 Mako,涵盖安装、基础语法、高级特性及安全实践。
一、为什么使用模板引擎
直接拼接字符串生成 HTML 不仅效率低下,而且难以维护。模板引擎提供了以下优势:
- 关注点分离:前端设计师专注于 HTML/CSS,后端开发者专注于逻辑。
- 代码复用:通过继承和包含机制减少重复代码。
- 安全性:自动转义功能可防止跨站脚本攻击(XSS)。
- 性能优化:编译后的模板通常比纯解释执行更快。
二、使用 Jinja2 模板库
Jinja2 是 Python 生态中最流行的模板引擎之一,也是 Flask 框架的默认模板引擎。它语法灵活,功能强大。
1. 安装与环境配置
pip install jinja2
2. 加载模板
使用 Environment 类来管理模板环境,FileSystemLoader 用于指定模板文件路径。
from jinja2 import Environment, FileSystemLoader
# 初始化环境,指定模板目录
env = Environment(loader=FileSystemLoader('templates'))
# 获取模板对象
template = env.get_template('index.html')
3. 渲染模板
通过 render 方法传入上下文数据字典,模板中的变量将被替换。
output = template.render(
title='欢迎页面',
content='欢迎来到我的网站',
items=['Item 1', 'Item 2', 'Item 3']
)
print(output)
4. 控制结构与变量
Jinja2 支持标准的编程结构,如条件判断和循环。
模板示例 (index.html):
<!DOCTYPE html>
<html>
<head><title>{{ title }}</title></>
{{ content }}
{% if items %}
{% for item in items %}
{{ item }}
{% endfor %}
{% else %}
暂无数据
{% endif %}


