Flask中的jinji2---过滤器

news/2025/1/15 19:50:24/文章来源:https://www.cnblogs.com/lmc7/p/18673646

在 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 的灵活性,结合模板变量和逻辑,可以生成强大的动态内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869758.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

THREE.js学习笔记6——Geometries

这一小节学习THREE.js中的物理模型。 什么是geometry?(英文解释,翻译为中文就看不懂了,直接看英语吧)Composed of vertices (point coordinates in 3D spaces)and faces (triangles that join those vertices to create a surface) Can be used for meshes but also for par…

第三节 回归实战

数据处理超参:人为指定不能改变测试数据只有x没有标签y 训练数据拆分,82开,作训练集和验证集(验证模型好坏),模型训练不是一路上升的过程,训练几次验证一次,最好的模型save下来 one-hot独热编码 猪(1 0 0) 狗(0 1 0) 猫(0 0 1) def get_feature_importance(feature_data, label…

Windows git bash 文字显示/斜杠开头数字

前言全局说明Windows git bash 文字显示/斜杠开头数字一、说明 详细介绍:https://zhuanlan.zhihu.com/p/133706032二、问题三、解决方法 git config --global core.quotepath false免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参考、来源: h…

DDR 带宽的计算与监控

DDR 带宽(Double Data Rate Bandwidth)是指 DDR 内存在一秒内可以传输的数据量,通常以 GB/s(Gigabytes per second) 为单位。它是衡量内存系统性能的重要指标,直接影响系统的数据吞吐能力。 1.如何计算 DDR 带宽 计算 DDR 理论带宽的公式为: DDR主频 * 位宽 = 理论带宽其…

1.15

尽力了,之前的粗心导致现在要改很多以前的坑,明天再继续

中考英语优秀范文-热点话题-传统文化-006 Welcome to Chinese Summer Camp 欢迎参加中国夏令营

1 写作要求 假定你是李华,你校今年暑假将为外国学生举办一场汉语夏令营活动(Chinese Summer Camp)。请你根据下面海报的内容,用英语给你的笔友David写一封电子邮件,介绍本次活动并邀请他参加。词数80左右。 Welcome to Chinese Summer Camp Time:July 18th—July 28th, 2…

机器人

本文来自博客园,作者:Traktorea,转载请注明原文链接:https://www.cnblogs.com/kdsmyhome/p/18673586

使用Nginx实现前端映射到公网IP后端内网不映射公网.250115

一、场景: 系统移动端需要映射到公网,但是后端地址不能映射出去 qbpm.xxxx.cn 系统解析内网IP qmbpm.xxxx.cn 移动端解析公网IP 二、思路: 移动端前端公网端口放出80 443端口 移动端后端映射到内网后端地址qbpm.xxxx.cn:8443 三、解决方法: vim nginx.confserver {listen 8…

Qml 中实现任意角为圆角的矩形

在 Qml 中,矩形(Rectangle)是最常用的元素之一。 然而,标准的矩形元素仅允许设置统一的圆角半径。 在实际开发中,我们经常需要更灵活的圆角设置,例如只对某些角进行圆角处理,或者设置不同角的圆角半径。 本文将介绍如何通过自定义 Qml 元素实现一个任意角可为圆角的矩形…

【附源码】JAVA在线投票系统源码+SpringBoot+VUE+前后端分离

学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:在线投票系统源码 。 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 系统测试截图系统视频演示https://githubs.xyz/show/340.mp4二. 系统概述【 系统…

Python Playwright学习笔记(一)

一、简介 1.1Playwright 是什么? 它是微软在 2020 年初开源的新一代自动化测试工具,其功能和 selenium 类似,都可以驱动浏览器进行各种自动化操作。 1.2、特点是什么支持当前所有的主流浏览器,包括 chrome、edge、firefox、safari; 支持跨平台多语言:支持Windows、Linux、…

智能驾驶数据采集回注测评工具 - ARS

在数据驱动智能驾驶的时代背景下,开发者们总结了一条适用于智能驾驶的数据闭环开发流程,这条开发线路大致包括实车数据采集->数据存储->数据处理->数据分析->数据标注->模型训练->仿真测试->实车测试->部署发布等关键环节,通过不断开发迭代,逐步完…