控制块
-
{% if 条件 %} {% endif %}
- 添加标号 :
{{ loop.index }}
- 标号倒序 :
{{ loop.revindex }}
- 判断是否是第一行 :
{{ loop.first }}
- 判断是否是最后一行 :
{{ loop.last}}
- 添加标号 :
-
{% for 变量 in 可迭代的对象 %} {% endfor %}
过滤器
- 过滤器的本质就是函数
- 过滤器语法 :
{{ 变量名 | 过滤器 }}
常用过滤器
salfe
: 禁用转译capitalize
: 首字母大写lower
: 全部小写upper
: 全部大写title
: 每一个单词的首字母大写format
: 格式化{{ '%s is %d' } | format('hanmeimei', 10) }}
truncate
: 字符串截断{{ 'hello world' | truncate(5) }}
列表过滤器的使用
{{ girls | first }}
: 取出列表中第一个元素{{ girls | last }}
: 取出列表中最后一个元素{{ girls | length }}
: 列表的长度{{ girls | sum }}
: 列表的求和. 整型的计算{{ girls | sort}}
: 排序
字典过滤器的使用
{{ user.0 }}
: 获取第一个元素{% for v in user.0.vlaues() %} {% endfor %}
: 获取值{% for v in user.0.keys() %} {% endfor %}
: 获取键{% for v in user.0.items() %} {% endfor %}
: 获取键值对
自定义模板过滤器
app.py
from flask import Flask, render_template
app = Flask(__name__)
# 过滤器本质就是函数
def replace_hello(value):
# 把hello替换为空字符
value = value.replace('hello', '')
# 去除字符串两端的空格
return value.strip()
@app.route('/show')
def index():
msg = 'hello everyone hello world'
return render_template('show.html', msg=msg)
if __name__ == '__main__':
# 注册模板过滤器
app.add_template_filter(replace_hello, 'replace')
app.run()
show.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.a{
color: red;
}
</style>
</head>
<body>
<div>
{{ msg }}
<hr>
<!-- 使用自定义模板 -->
{{ msg | replace }}
</div>
</body>
</html>
第二种方式 (装饰器)
- 需求 : 反转列表
app.py
from flask import Flask, render_template
app = Flask(__name__)
# 装饰器的方式
@app.template_filter('li')
def reverse_list(li):
temp_li = list(li)
temp_li.reverse()
return temp_li
@app.route('/show')
def index():
msg = 'hello'
return render_template('show.html', msg=msg)
if __name__ == '__main__':
app.run()