模板
和django的模板引擎
- 支持list[]
- 函数默认不加括号
from flask import Flask, Markup, render_template
app = Flask(__name__)
# 全局函数
@app.template_global() # 每个模板中都可以使用
def global_fun(a1, a2):
return a1 + a2
@app.route('/')
def index():
def fun_inner(v1):
return v1 + 100
def fun_safe(v1):
return Markup(f'<input value="{v1}"/>') # 安全字符串
context = {
'x1': '枫枫知道',
'x2': ['a1', 'a2', 'a3'],
'x3': {'name': '王五'},
'x4': lambda x: x + 1,
'x5': fun_inner,
'x6': fun_safe,
}
return render_template('index.html', **context)
if __name__ == '__main__':
app.run(debug=True, port=80)
# 前端使用
<p>{{ x1 }}</p>
<p>{{ x2.0 }} -- {{ x2[0] }}</p>
<p>{{ x3.name }} -- {{ x3['name'] }}</p>
<p>{{ x4(2) }}</p>
<p>{{ x5(100) }}</p>
<p>{{ x6(7) }} -- {{ '<span style="color:red;">哈哈哈</span>'|safe }}</p>
<p>{{ global_fun(4, 3) }}</p>
自定义过滤器
# 自定义过滤器
@app.template_filter()
def db(a1, a2, a3):
return f'{a1}--{a2}--{a3}'
# 调用
<p>{{ 'zhangsan'|db('21', '北京市') }}</p>
模板继承
和django的模板一致
include也是一致的