目录
过滤器的作用
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")
运行结果:

760



被折叠的 条评论
为什么被折叠?



