pallets

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 邮件与报表的后端工程师
  • 静态站点与文档工具开发者
  • 需要代码生成模板的开发者

快速上手

  1. 安装:pip install jinja2
  2. 用代码加载并渲染模板
from jinja2 import Template

tpl = Template('Hello, {{ name }}!')
print(tpl.render(name='Jinja'))
  1. 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 端,模板只负责展示

历史版本

排序