Jinja2模板过滤器

关于jinja2的{{...|safe}}过滤器 原文:https://www.jianshu.com/p/deddb31ab9fe 没有接触过这门语言,不过像很多类似的例子可供参考,如果不对输入过滤,又恰好满足某些条件,是很有可能由于恶意输入导致程序崩溃,甚至用户信息流失的。 最简单的例子是输出HTML,如果对于某些特殊符号不做转移,很容易就会被恶意脚本攻击了。 我猜想这门语言应该对于特定条件下的输入有自动的过滤(an environment... 阅读详情

目录

过滤器的作用

如何添加过滤器

代码展示

运行结果

过滤器介绍

1. safe

2. capitalize

3. lower

4. upper

5. title

6. trim

7. striptags


过滤器的作用

Jinja2模板中的过滤器起到一个简单的渲染作用,它可以把接收到的数据经过简单的处理重新显示。

如何添加过滤器

在模板中的可变参数后,添加管道符和过滤器名字即可完成添加过滤器。例如下面的HTML代码,可变参数name后有一个capitalize过滤器。(⚠️注意:过滤器名称是不能自定义的)capitalize过滤器可以将接收的字符串首字母变为大写,其余字母变为小写。

<p>{{name | capitalize}}</p>

代码展示

HTML代码:

这里使用了两个过滤器capitalize和upper。upper过滤器的作用是将所有字母转换成大写。capitalize过滤器的作用是将首字母大写,其余字母转换成小写。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | capitalize}}</p>
    <p>{{name2 | upper}}</p>
</body>
</html>

Python脚本:

分别向模板中定义的两个参数name和name2传入一个相同的字符串。


import flask
import webbrowser

app = flask.Flask(__name__)

@ app.route("/")
def index():
    name = "Python is FUN."
    return flask.render_template("filter.html",
                                 name=name,
                                 name2=name)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果

可以看出过滤器对字符串显示重新做了修改和调整。

过滤器介绍

1. safe

safe过滤器在渲染时不转义,即一个没有任何效果作用的过滤器。

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | safe}}</p>
</body>
</html>

Python脚本:


import flask
import webbrowser

app = flask.Flask(__name__)

@ app.route("/")
def index():
    name = "Python is FUN."
    return flask.render_template("filter.html",
                                 name=name)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果:

2. capitalize

capitalize过滤器将字符串的首字母大写,其余字母转换成小写。如果字符串的首字母是非英文字母,则不进行首字母大小写转换,仅仅将字符串中其他英文字母转换成小写。

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | capitalize}}</p>
</body>
</html>

Python脚本:


import flask
import webbrowser

app = flask.Flask(__name__)

@ app.route("/")
def index():
    name = "@python is FUN."
    return flask.render_template("filter.html",
                                 name=name)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果:

3. lower

将字符串中的英文字母转换成小写。

HTML模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | lower}}</p>
</body>
</html>

Python脚本:


import flask
import webbrowser

app = flask.Flask(__name__)

@ app.route("/")
def index():
    name = "@python is FUN."
    return flask.render_template("filter.html",
                                 name=name)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果:

4. upper

将字符串中的英文字母转换成大写。

HTML模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | upper}}</p>
</body>
</html>

Python脚本:


import flask
import webbrowser

app = flask.Flask(__name__)

@ app.route("/")
def index():
    name = "@python is FUN."
    return flask.render_template("filter.html",
                                 name=name)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果:

5. title

将字符串中的每个单词的首字母大写,并将单词的其他字母变成小写。

HTML模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | title}}</p>
</body>
</html>

Python脚本:


import flask
import webbrowser

app = flask.Flask(__name__)

@ app.route("/")
def index():
    name = "@python is FUN."
    return flask.render_template("show.html",
                                 name=name)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果:

6. trim

trim去掉字符串的前后空格。

HTML模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | trim}}</p>
</body>
</html>

Python脚本:


import flask
import webbrowser

app = flask.Flask(__name__)

@ app.route("/")
def index():
    name = "            @python is FUN.         "
    return flask.render_template("show.html",
                                 name=name)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果:

7. striptags

striptags去掉字符串中所有的HTML标签。

HTML模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>show Jinja2 filter</title>
</head>
<body>
    <p>{{name | striptags}}</p>
</body>
</html>

Python脚本:

import flask
import webbrowser

app = flask.Flask(__name__)


@app.route("/")
def index():
    name = "<h1>python is FUN.</h1>"
    param = {
        "name": name
    }
    return flask.render_template("show.html", **param)


if __name__ == '__main__':
    webbrowser.open("http://127.0.0.1:8890")
    app.run(host="0.0.0.0", port="8890")

运行结果:

JinJia2 过滤器 自定义过滤器在Jinja2模板引擎中是一项强大的功能,它允许开发者定义自己的函数来处理和转换模板中的变量。这些自定义过滤器可以像Jinja2的内置过滤器一样,在模板中被管道符()调用。首先,你需要在Python中定义一个函数,这个函数将作为你的自定义过滤器。这个函数应该接受至少一个参数(即模板中传递给过滤器的变量),并返回处理后的结果。# 对value进行处理# 例如,将字符串转换为大写。 阅读详情

相关推荐

从字符串到序列:Jinja2 过滤器的终极指南(Jinja2 filter过滤器的使用方法整理与总结)

从字符串到序列:Jinja2 过滤器的终极指南(Jinja2 filter过滤器的使用方法整理与总结)

XiaoqiangClub的博客 760

Jinja2 中常用的过滤器

Jinja2 是 Python 中流行的模板引擎之一,具有可扩展性和灵活性。在 Jinja2 中,过滤器是一种特殊的功能,它可以用于修改变量的输出。本文将介绍 Jinja2 中常用的过滤器以及如何使用它们。

flower_drop的博客 2199

Xilinx XDMA驱动代码分析及用法

Xilinx XDMA驱动代码分析及用法 先简单的介绍一下,赛灵思的XDMA的驱动是用于做什么的、他的主要功能就类似与网卡pcie接口的网卡驱动、用于控制主机与fpga设备进行pcie的通讯。通讯的主要方式是设备文件的读写,这里不清楚的同学可以看一下我上一篇文章。通过控制设备文件的读写,操作驱动与fpga设备进行数据传输。 1、目录结构 zacha@Superman:~/nfs/xdma-debug/dma_ip_drivers-master/XDMA/linux-kernel$ tree -C . ├──

恍恍惚惚的大穷猫的博客 3万+

【Flask框架】——12 Jinja2模板-过滤器

什么是过滤器? 实质上就是一个转换函数。变量可以通过“过滤器”进行修改,过滤器可以理解为是jinja2里面的内置函数和字符串处理函数。

Python全栈系列 1105

科研党必备:用MATLAB批量处理.mat文件数据的3种高效方法

本文为科研人员提供了使用MATLAB批量处理.mat文件数据的三种高效方法,涵盖智能数据加载、专业可视化与自动化报告生成。通过构建自动化框架、多维度数据画图策略及批量处理流程,帮助用户显著提升数据处理效率与图表专业性,解决海量实验数据的管理与分析难题。

weixin_29089057的博客 73

锁定放大器

锁定放大器

qq_46757048的博客 4706

flask之 jinja2模板内置过滤器

jinja2模板内置过滤器 文章目录jinja2模板内置过滤器过滤器参考代码py文件html文件 过滤器 过滤器是通过管道符号(|)实用的,比如{{ age|abs }}是返回age的绝对值。过滤器类似函数,将参数传递给过滤器,再由过滤器根据其相应的功能返回相应的值去渲染网页。jinja2有许多内置的过滤器,下面一 一进行介绍: abs(value):返回value的绝对值 default(value,default_value):设置默认值,如果value没有定义,则返回默认的default_va

yuaicsdn的博客 1327

三菱MC协议(MC/TCP):避坑指南|C#实现三菱MC协议:软元件(X/Y/M/D)读写与帧格式解析

核心避坑逻辑:MC协议的坑80%集中在“PLC配置”“地址编码”“字节序”,先解决这三点,通信就成功了一半;实战优先级:新手优先用开源库(Mitsubishi.MCProtocol),避免手动拼接帧格式的复杂坑;进阶再研究帧格式解析;排坑技巧:先Ping通→用调试助手验证→写C#代码,分层排查,不要混在一起找问题。掌握这些避坑技巧后,你可以轻松实现C#与三菱全系列PLC的稳定通信,满足工业场景中数据采集、设备控制等核心需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2197

Flask中Jinja2模板过滤器

Flask框架中Jinja2模板过滤器

IT之一小佬的博客 1016

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 626

【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据

在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式(1)人工通知(比如常规的使用邮件),然后运维人员手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hive 的外部表和内部表 schema那么现在,有了 Paimon ,我们可以利用其特性,自动识别并同步 DDL 这些变化,并同步至 hive 的 paimon 格式表中。

欢迎来到我的博客,一起探索代码里的世界! 1250

【Flask】Jinja2模板之过滤器

一、过滤器定义 实质上就是一个转换函数。变量可以通过“过滤器”进行修改,过滤器可以理解为是jinja2里面的内置函数和字符串处理函数。 常用的过滤器有: 1、字符串过滤器 视图函数 from flask import Flask, render_template # todo 初始化Flask项目的服务 app = Flask(__name__) student = {'name': 'kobe', 'age': 14, 'gender': '男'} @app.route('/str') def t

python全栈 1806

什么是 SAP ABAP AMDP?

SAP HANA是SAP开发的一种内存数据库管理系统,它具有出色的性能和处理大规模数据的能力。为了充分利用SAP HANA的性能,SAP引入了AMDP技术,以便将数据库操作推送到数据库服务器执行,从而减少数据传输和处理时间。AMDP方法通常需要输入参数和输出参数。输入参数用于传递数据到SQLScript代码,而输出参数用于接收SQLScript代码的结果数据。ENDMETHOD.ENDCLASS.我们定义了一个输入参数来传递销售订单数据,以及一个输出参数来接收计算结果。ENDMETHOD.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 908

flask学习之jinja2模板自带的过滤器

jinja2模版过滤器 管道符号|连接的 过滤器相当于一个函数,吧当前的变量传入到过滤器中,过滤器根据自己的功能进行渲染,比如输入大写时但是显示为小写,输入小写显示为大写字母等操作。 jinja自带的过滤器很多,下文将介绍调用方式。 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def index(): context = { 'username': 'lcy', .

LCY133的博客 601

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jinja2-模板过滤器

什么是过滤器 在模板中, 过滤器相当于一个函数, 把当前的变量传入到过滤器中, 然后过滤器根据自身功能, 再返回对应的值, 之后再把结果渲染到页面中 基本语法: {{ 变量 | 过滤器名称 }} 使用管道符号"|"进行组合 abs过滤器 abs过滤器返回一个数值的绝对值 例如: {{ 变量|abs }} default过滤器 default过滤器: 如果变量不存在就使用默认值 {{ p...

weixin_44737646的博客 1062

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jinja2的模板过滤器引用及自定义

一、jinja2模板过滤器 过滤器是通过管道符号(|)进行使用的,例如:{{ name|length }},将返回name的长度。过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中。Jinja2中内置了许多过滤器,在这里可以看到所有的过滤器 • abs(value):返回一个数值的绝对值。 • default(value,default_value,boolean=false):如果当前变量没有值,则会使用参数中的值来代替。name|

laoluobo76的博客 1556

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python+flask后端开发系列 | Jinja2模板下,过滤器的使用

Flask框架中的Jinja2模板过滤器应用指南。内容涵盖:1)Jinja2基础功能与渲染原理;2)常用内置过滤器的实践应用;3)自定义过滤器开发方法;4)展示类与字典两种高级过滤器的封装形式;5)结合高炉炉温监控系统功能简易实例,演示过滤器在实际项目中的应用场景。通过学习,开发者将掌握模板数据处理的核心技能,提升前端展示效果和开发效率。

段一凡的博客 2272

【Jinja2模板】过滤器(六)

jinja2模板中过滤器的使用:一、用管道符号表示过滤器( | )。二、自定义过滤器。如果jinja2模板中的过滤器无法满足我们的使用需求,我们也可以自定义过滤器。

hold_on_qlc的博客 1143

Flask Web框架(二)Jinja2模板过滤器

Jinja2模板过滤器 1.模板的简介 模板是一个web开发必备的模块。因为我们在渲染一个网页的时候,并不是只渲染一个纯文本字符串,而是需要渲染一个有富文本标签的页面。这时候我们就需要使用模板了。在Flask中,配套的模板是Jinja2模板过滤器,Jinja2模板过滤器的作者也是Flask的作者。这个模板非常的强大,并且执行效率高。 Flask渲染jinja2模板 要渲染一个模板需要通过render_template方法,模板文件放在当前文件夹下的templates文件夹下 from flask imp

weixin_52173254的博客 255

Python Flask,模板,Jinja2模板,模板变量,过滤器

  demo.py(模板变量,过滤器): # coding:utf-8 from flask import Flask, render_template # 导入render_template app = Flask(__name__) @app.route("/index") def index(): data = { "name": "python",...

houyanhua1的专栏 724

Flask Jinja2 模板中的变量和过滤器

Flask Jinja2 模板中的变量和过滤器 Flask 可以在视图函数中返回模板文件,模板引擎默认使用的是 Jinja2 。 通常,返回的 Jinja2 模板文件并不是一个静态的页面,而是同时有静态部分和动态部分。 静态部分可以硬编码写死,动态部分需要通过变量传值或过滤器处理等方式来实现。 一、向 Jinja2 模板文件中传入变量 在 Flask 的视图函数中,将变量的值传递给模板文...

weixin_43790276的博客 3619

python Flask框架学习——jinja2模板过滤器

jinja2模板过滤器介绍 过滤器是通过管道符号(|)进行使用的,例如:{{ name|length }},将返回name的长度。 过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中。 jinja2过滤器 过滤器 说明 abs 返回一个数的绝对值 default 设置默认值 escape或e 转义字符,将<、>等符号转移成HTML中的符号 first 返回一个序列的第一个元素 format 格

cmy_top的博客 362

模板过滤器、Jinja2中的控制和循环语句

过滤器是通过管道符号(|,将返回name的长度。过滤器相当于是一个Jinjia2自己的函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中,方便你在HTML中也能使用函数。常用模板过滤器:这里使用了传入的参数username,然后用了过滤器length返回字符串长度。效果;

qq_55621259的博客 745

137. Python语言 的 Flask框架项目前导 之 模板 第二章 :Jinja2 模板过滤器

Python语言 的 Flask框架项目前导 之 模板 第章 :

sinat_38761218的博客 288

1.5【Flask框架学习】Jinja2模板过滤器

Jinja2模板过滤器过滤器简介常用过滤器 过滤器简介 过滤器是通过管道符号 | 进行使用的。例如:{{ name|length }} 将放回name的长度。 过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中。Jinja2中内置了许多过滤器。 常用过滤器 abs(value): 返回一个数值的绝对值。 default(value,default_value,boolean=false): 如果当前变量没有值,则会使用参数中的值来代

学python的小小小小白 565
上一篇: Linux下安装pyenv
下一篇: virsh查询虚拟机列表
TCatTime
博客等级 码龄9年 400粉丝 256原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值