Flask(7) - jinja2模板使用(过滤器)

mac2024-03-15  16

一、过滤器基本使用

在模板中要对一些变量进行处理,那就需要类似python中的函数一样,可以将值传到函数中,然后做一些处理。 # app.py from flask import Flask, render_template app = Flask(__name__) @app.route("/index/") def index(): # 传参 res = { "name": -100 } return render_template("index.html", **res) if __name__ == '__main__': app.run(debug=True) <!-- index.html --> <!DOCTYPE html> <html lang="zh-en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>index</title> </head> <body> <h1>绝对值</h1> <!-- 过滤器通过“|”管道符调用 --> <!-- 过滤器语法:{{变量值|过滤器的名字}} --> <p>{{ name }}绝对值:{{ name|abs }}</p> </body> </html>

二、常用过滤器

default过滤器使用 #app.py from flask import Flask, render_template app = Flask(__name__) @app.route("/index/") def index(): res = { # "name": "asdasd" } return render_template("index.html", **res) if __name__ == '__main__': app.run(debug=True) <!-- index.html --> <!DOCTYPE html> <html lang="zh-en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>index</title> </head> <body> <h1>default</h1> <!-- 如果name不存在,默认显示为空,通过default增加一个显示默认值 --> <p>{{ name|default("asd") }}</p> </body> </html> 其他常用过滤器 abs(value) : 返回一个绝对值。示例:-100|abs default(value, defautl_value, boolean=False) : 如果当前的变量没有赋值,则使用default中的参数代替;如果变量值等于None时,需要boolean=True。示例: name|default("hahaha") escape(value):转义字符,将“< >”等字符转义成html中的符号。示例:name|escape first(value):返回一个序列的第一个元素。示例:names|first format(value,arags,*kwargs):格式化字符串。示例:{{ "%s" - "%s"|format('Hello',"world") }}输出:Hello-world last(value):返回序列的最后一个元素。示例:name|last length(value):返回序列、字典的、字符的长度。示例:name|length join(value,a="b"):将序列用a这个参数值拼接成字符串 safe(value):如果开启了全局转义,可以通过safe过滤器将变量关掉转义。示例:name|safe int(value):将值转换成int类型 float(value):将值转换成float类型 lower(value):将值转换成小写 upper(value):将值转陈成大写 replace(value,old,new):将old替换成new字符串 truncate(value,length=100,killwords=False):截取length长度的字符串 striptags(value):删除所有html标签,如果有多个空格,则替换成一个空格 trim(value):截取字符串前面和后面的空白字符 strint(value):将变量转为字符串 wordcount(c):计算字符串中出现c单词的个数

三、自定义过滤器

# app.py # 自动启动 app.config["TEMPLATES_AUTO_RELOAD"] @app.route('/') def hello_world(): res = { "name": "哈哈 呵呵 嘻嘻", } return render_template("index.html", **res) # @app.template_filter("delstrs")中的delstrs是过滤器的名字 @app.template_filter("delstrs") def delstrs(value): # 删除“哈哈”字符串 value = value.replace("哈哈","") return value <!--index.html--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <!--使用过滤器过滤变量name--> <p>{{ name|delstrs }}</p> </body> </html>

 

 

 

 

 

最新回复(0)