模板
1 基本用法
flask比django更加接近Python。
from flask import Flask,render_template
app = Flask(__name__,)
def func(arg):
return '你好' + arg
@app.route('/md')
def index():
nums = [11,222,33]
return render_template('md.html',nums=nums,f=func)
if __name__ == '__main__':
app.run()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>头</h1>
{% block content %} {% endblock %}
<h1>底</h1>
</body>
</html>
<form action="">
<input type="text">
<input type="text">
</form>
{% extends 'layout.html' %}
{% block content %}
<h1>MD</h1>
{% include 'form.html' %}
{{ f("汪洋") }}
{% endblock %}
2 定义全局模板方法
from flask import Flask,render_template
app = Flask(__name__,)
@app.template_global() # {{ func("赵海宇") }}
def func(arg):
return '海狗子' + arg
@app.template_filter() # {{ "赵海宇"|x1("孙宇") }}
def x1(arg,name):
return '海狗子' + arg + name
@app.route('/md/hg')
def index():
return render_template('md_hg.html')
if __name__ == '__main__':
app.run()
解析
1. flask和Django中的模板用法不一样,使用的是jinja2,它的用法更加的接近python语法,并且一些更加强大的功能;
2. 这个模板语法执行python的函数,可以将函数名传到模板中加括号执行,并且可以传入参数;
3. 它同样也支持模板的继承;
4. 可以定义全局应用的模板方法,# @app.template_global()
5. 可以写自定义过滤器; # @app.template_filter()
6. 注意:在蓝图中注册时候,应用返回只有本蓝图。