版权声明:FatPuffer https://blog.csdn.net/qq_42517220/article/details/88788218
宏:
定义:
把重复出现的代码定义为宏,达到可以多次调用的效果。
不带参数宏的定义与使用:
定义:
{% macro input() %}
<imput type="text" name="username" value="" size="30"/>
{% endmacro %}
使用:
{% input() %}
示例:
# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/index')
def index():
return render_template("index.html")
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
{% macro input() %}
<input type="text" name="username" value="" size="30">
{% endmacro %}
<h1>input 1</h1>
{{ input() }}
<h1>input 2</h1>
{{ input() }}
</body>
</html>
带参数宏的定义与使用:
示例:
# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/index')
def index():
return render_template("index.html")
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
{% macro input2(type, value, size) %}
<input type="{{ type }}" name="username" value="{{ value }}" size="{{ size }}">
{% endmacro %}
<h1>input2</h1>
{{ input2("password", "", "50") }}
</body>
</html>
给变量默认值
# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/index')
def index():
return render_template("index.html")
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
{% macro input3(type="text", value="", size="20") %}
<input type="{{ type }}" name="username" value="{{ value }}" size="{{ size }}">
{% endmacro %}
<h1>input3</h1>
{{ input3() }}
<h1>input3</h1>
{{ input3("password", size="100") }}
</body>
</html>
宏定义在外部的使用
定义宏:macro.html
{% macro input4(type="text", value="", size="20") %}
<input type="{{ type }}" name="username" value="{{ value }}" size="{{ size }}">
{% endmacro %}
在模板中使用上述定义在外部文件中的宏
{% import 'macro.html' as func %}
{% func.input4 %}