Jinja 是一个快速、表达力强、可扩展的 Python 模板引擎,用类 Python 语法的占位符把数据渲染成 HTML 等最终文档,是 Flask 的默认模板方案。
- 3.1.6
- 发布于
- 2025年3月6日
- 11,796
- 星标
- 83,220
- 下载
- 同步于
- 8 天前
最新版本
3.1.62025年3月6日 04:05下载慢?可在上方随时切换镜像源
项目说明
项目概述
Jinja 是一个快速、表达力强、可扩展的 Python 模板引擎。模板中通过特殊占位符书写类似 Python 语法的代码,传入数据后渲染出最终文档,广泛用于 Web 页面与各类文本生成场景。它内置自动转义、沙箱环境、模板继承与国际化等能力,模板会被即时编译为优化过的 Python 代码并缓存,性能出色。
| 项目 | 内容 |
|---|---|
| 语言 | Python |
| 类型 | 模板引擎 |
| 许可 | BSD-3-Clause |
| 异步 | 支持 AsyncIO |
应用逻辑留在 Python,模板设计不受限,两边都舒服。
主要功能
- 模板继承:通过 extends 与 block 实现布局复用,支持模板包含
- 宏定义:在模板内定义并导入宏,像函数一样复用片段
- 自动转义:HTML 模板自动转义不可信的用户输入,防止 XSS
- 沙箱环境:可安全渲染不受信任的模板
- 异步支持:支持 AsyncIO 生成模板与调用异步函数
- 国际化:配合 Babel 提供 I18N 支持
- 即时编译:模板编译为优化 Python 代码并缓存,也可提前编译
- 可扩展:过滤器、测试、函数乃至语法都可自定义
- 错误定位:异常指向模板中的正确行号,调试更轻松
适用人群
- Flask 及 Python Web 开发者
- 需要生成 HTML 邮件与报表的后端工程师
- 静态站点与文档工具开发者
- 需要代码生成模板的开发者
快速上手
- 安装:
pip install jinja2 - 用代码加载并渲染模板
from jinja2 import Template
tpl = Template('Hello, {{ name }}!')
print(tpl.render(name='Jinja'))- Web 场景中配合模板文件使用继承与块
{% extends 'base.html' %}
{% block content %}
<ul>
{% for user in users %}
<li><a href='{{ user.url }}'>{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endblock %}核心优势
- 性能出色:模板即时编译并缓存,渲染开销小
- 安全默认:自动转义与沙箱机制降低注入风险
- 表达力强:控制结构、过滤器、宏一应俱全
- 生态广泛:Flask、Pelican、Ansible 等大量项目以其为模板引擎
系统要求
| 项目 | 要求 |
|---|---|
| 语言 | Python 3 |
| 操作系统 | Linux、macOS、Windows |
注意事项
- 手动构造不转义:直接用
Template类渲染不会自动转义,Web 场景应使用启用自动转义的 Environment - 逻辑别写进模板:复杂业务逻辑建议放在 Python 端,模板只负责展示
历史版本
排序