首页 > 其他分享 >Flask中的jinji2---过滤器

Flask中的jinji2---过滤器

时间:2025-01-15 19:54:12浏览次数:1  
标签:Flask jinji2 列表 --- Jinja2 字符串 data hello

在 Jinja2 中,过滤器是用于对模板变量进行操作的工具,类似于管道。以下是 Jinja2 中常用的过滤器及其功能:


1. 字符串处理

capitalize

将字符串的首字母大写,其余部分小写。

{{ "hello world" | capitalize }}
<!-- 输出: Hello world -->

lower

将字符串转为小写。

{{ "HELLO" | lower }}
<!-- 输出: hello -->

upper

将字符串转为大写。

{{ "hello" | upper }}
<!-- 输出: HELLO -->

title

将字符串中每个单词的首字母大写。

{{ "hello world" | title }}
<!-- 输出: Hello World -->

trim

去掉字符串两端的空格。

{{ "  hello  " | trim }}
<!-- 输出: hello -->

replace

替换字符串中的子串。

{{ "hello world" | replace("world", "Jinja2") }}
<!-- 输出: hello Jinja2 -->

2. 列表处理

length

返回列表、字符串或字典的长度。

{{ [1, 2, 3, 4] | length }}
<!-- 输出: 4 -->

join

将列表中的元素用指定字符串连接为一个字符串。

{{ ["Python", "Flask", "Jinja2"] | join(", ") }}
<!-- 输出: Python, Flask, Jinja2 -->

sort

对列表进行排序(默认为升序)。

{{ [3, 1, 4, 2] | sort }}
<!-- 输出: [1, 2, 3, 4] -->

unique

移除列表中的重复元素。

{{ [1, 2, 2, 3, 4, 4] | unique }}
<!-- 输出: [1, 2, 3, 4] -->

reverse

将列表或字符串反转。

{{ [1, 2, 3] | reverse }}
<!-- 输出: [3, 2, 1] -->
{{ "hello" | reverse }}
<!-- 输出: olleh -->

3. 数值处理

abs

返回绝对值。

{{ -5 | abs }}
<!-- 输出: 5 -->

round

对数值进行四舍五入。

{{ 3.14159 | round(2) }}
<!-- 输出: 3.14 -->

sum

对列表或字典的值求和。

{{ [1, 2, 3, 4] | sum }}
<!-- 输出: 10 -->

4. 字典处理

keys

返回字典中的键。

{{ {"a": 1, "b": 2} | keys }}
<!-- 输出: ["a", "b"] -->

values

返回字典中的值。

{{ {"a": 1, "b": 2} | values }}
<!-- 输出: [1, 2] -->

5. 默认值处理

default

如果变量未定义或为 None,使用默认值。

{{ user | default("Guest") }}
<!-- 如果 user 未定义,则输出: Guest -->

6. 测试和逻辑处理

defined

检查变量是否已定义。

{{ user is defined }}
<!-- 如果 user 定义了,则输出: True -->

equalto

检查变量是否等于某个值。

{{ score is equalto 100 }}
<!-- 如果 score 等于 100,则输出: True -->

7. 日期和时间

strftime

格式化日期。

{{ date | strftime("%Y-%m-%d") }}
<!-- 输出: 2025-01-15 -->

8. 安全处理

escape

转义 HTML 字符。

{{ "<div>Hello</div>" | escape }}
<!-- 输出: &lt;div&gt;Hello&lt;/div&gt; -->

safe

标记字符串为安全,不再转义。

{{ "<b>Hello</b>" | safe }}
<!-- 输出: <b>Hello</b> -->

示例综合应用

假设后端传入的数据为:

data = {
    "name": "john doe",
    "tags": ["Python", "Flask", "Jinja2"],
    "scores": [10, 20, 30],
    "description": "<p>This is a <b>description</b></p>"
}

模板代码:

<p>Name: {{ data.name | title }}</p>
<p>Tags: {{ data.tags | join(", ") }}</p>
<p>Highest Score: {{ data.scores | max }}</p>
<p>Description: {{ data.description | escape }}</p>

渲染结果:

<p>Name: John Doe</p>
<p>Tags: Python, Flask, Jinja2</p>
<p>Highest Score: 30</p>
<p>Description: &lt;p&gt;This is a &lt;b&gt;description&lt;/b&gt;&lt;/p&gt;</p>

这些过滤器大大提高了 Jinja2 的灵活性,结合模板变量和逻辑,可以生成强大的动态内容。

标签:Flask,jinji2,列表,---,Jinja2,字符串,data,hello
From: https://www.cnblogs.com/lmc7/p/18673646

相关文章