Flask(7) - jinja2模板使用(过滤器)
一、过滤器基本使用
- 在模板中要对一些变量进行处理,那就需要类似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评论