📜  jinja 模板表 - Python (1)

📅  最后修改于: 2023-12-03 14:43:06.505000             🧑  作者: Mango

Jinja 模板表 - Python

Jinja 是 Python 语言的一种模板引擎,它是 Flask web 框架的默认模板引擎。Jinja 提供了一种简单而强大的方式来将数据动态渲染到模板中,以生成最终的 HTML 页面。

特点

Jinja 的主要特点包括:

  • 插值:可以将变量嵌入到模板中,通过模板渲染将其替换为动态值。
  • 控制结构:使用类似 Python 的控制结构(例如 if/else、for 循环等)来控制模板中的渲染行为。
  • 继承:可以通过继承和块重写创建可重用的和分层的模板。
  • 过滤器:可以使用过滤器对变量进行转换,例如将日期格式化为字符串等。
  • 循环:可以在模板中进行循环遍历。
语法

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 的语法,并提供了许多内置的过滤器和控制结构。