python 模板库 Jinja2介绍
Jinja2 是一个用于 Python 的现代、设计者友好的模板语言。广泛应用于 web 框架如 Flask 中。它允许开发者通过将数据动态地嵌入到 HTML 或其他文本文件中来生成内容。以下是 Jinja2 的一些关键特性和概念:
变量和表达式:可以在模板中插入变量或执行表达式。当渲染模板时,Jinja2 会用传入的实际值替换这些变量和表达式的占位符。
模板继承:Jinja2 支持模板继承,允许你创建一个基本的模板布局,然后在子模板中覆盖或扩展特定的部分。这有助于保持网站的一致性并减少重复代码。
控制结构:支持 if-else 条件语句和 for 循环等控制结构,使你可以根据条件显示不同的内容或遍历数据集。
过滤器:可以使用过滤器修改变量的显示方式。例如,可以用
|
符号后跟过滤器名称的方式对文本进行大小写转换、转义 HTML 等操作。自动转义:为了防止跨站脚本攻击(XSS),Jinja2 默认开启自动转义功能,即自动对所有渲染的内容进行 HTML 转义,当然这也可根据需要关闭或针对特定部分调整。
宏:类似于函数的功能,可以在模板内定义可重用的代码块,并且能够传递参数。
包含语句:通过
{% include 'template_name' %}
可以将另一个模板的内容包含进来,便于复用公共组件如页眉、页脚等。
Jinja2 因其灵活性、易用性和强大的功能,在 Python 社区中被广泛采用,特别是在构建 web 应用程序时。
示例 1: 字典输出到html
假设你有一个 Python 字典,其中包含用户信息,你想在html中显示这些信息。
Python代码 :
from jinja2 import Template
user = {"name": "张三", "age": 30}
template_str = "<p>姓名: {{ name }}, </p><p>年龄: {{ age }}</p>"
template = Template(template_str)
print(template.render(user))
输出结果 :
<p>姓名: 张三 </p><p>年龄: 30</p>