Jinja 是一个快速、富有表现力、可扩展的模板引擎。模板中的特殊占位符允许编写类似 Python 语法的代码。然后将数据传递给模板以渲染最终文档。
它包括:
- 模板继承和包含。
- 在模板中定义和导入宏。
- HTML 模板可以使用自动转义来防止来自不受信任的用户输入的 XSS 攻击。
- 沙盒环境可以安全地渲染不受信任的模板。
- 对生成模板和调用异步函数提供 AsyncIO 支持。
- 通过 Babel 支持国际化 (I18N)。
- 模板会被即时编译成优化的 Python 代码并缓存,也可以提前编译。
- 异常会指向模板中的正确行,便于调试。
- 可扩展的过滤器、测试、函数,甚至语法。
Jinja 的理念是,虽然应用程序逻辑应尽可能放在 Python 中,但不应通过过度限制功能来增加模板设计师的工作难度。
{% extends "base.html" %}
{% block title %}Members{% endblock %}
{% block content %}
<ul>
{% for user in users %}
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endblock %}Pallets 组织负责开发和支持 Jinja 以及其他流行包。为了扩大贡献者和用户的社区,并让维护者能够投入更多时间到项目中,请立即捐赠。
请参阅我们详细的贡献文档,了解多种贡献方式,包括报告问题、请求功能、提问或回答问题以及提交 PR。