📅  最后修改于: 2023-12-03 14:43:06.505000             🧑  作者: Mango
Jinja 是 Python 语言的一种模板引擎,它是 Flask web 框架的默认模板引擎。Jinja 提供了一种简单而强大的方式来将数据动态渲染到模板中,以生成最终的 HTML 页面。
Jinja 的主要特点包括:
Jinja 的语法基于 Django 模板语法,但有所不同。以下是一些常用语法:
{{ variable }}
语法表示将变量插入到模板中。{% control_statement %}
语法表示控制语句,例如 {% if condition %}
和 {% for item in list %}
。{# comment #}
语法注释模板中的代码。{% extends 'base.html' %}
表示继承某个模板。{% block content %}
和 {% endblock %}
定义和重写块。要使用 Jinja,您需要安装 Jinja2
模块。一般可以通过 pip 安装,例如 pip install Jinja2
。
以下是一个简单的例子,展示了如何使用 Jinja 渲染模板:
from jinja2 import Template
template = Template("Hello {{ name }}!")
rendered = template.render(name="World")
print(rendered)
以上代码将输出 Hello World!
。
当然,更常见的是要将模板从文件中加载并渲染,例如:
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('index.html')
rendered = template.render(name="World")
print(rendered)
在以上代码中,我们从名为 'templates'
的目录中加载名为 'index.html'
的模板,并将其渲染。
Jinja 还提供了许多内置的过滤器用于对变量进行转换。以下是一些常用过滤器:
safe
:标记变量为安全值,防止其被转义。escape
:转义变量以防止 XSS 攻击。capitalize
:将字符串的首字母大写。lower
:将字符串转换为小写。upper
:将字符串转换为大写。length
:返回字符串或列表的长度。以下是例子:
from jinja2 import Environment
env = Environment()
template = env.from_string('Hello {{ name|capitalize }}!')
rendered = template.render(name="world")
print(rendered) # 输出 "Hello World!"
在以上代码中,变量 name
将首字母大写并插入到模板中。
Jinja 是一种简单而强大的 Python 模板引擎,能够将动态数据渲染到 HTML 页面中。它使用类似于 Django 的语法,并提供了许多内置的过滤器和控制结构。