jinja2 宏
宏相当于一个搭建好的页面一部分,可以被引入,可以往宏传递参数。可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量,在使用宏时传递参数,从而将宏渲染成为页面的一部分,跟python中的函数类似。
定义宏:
{% macro 宏名称(参数) %} {# 参数为可选#}
代码块
{% endmacro %}
{{ 宏名称(参数) }} {# 调用宏 #}
{% macro input(label,name,type='text') %}
<label>{{label}}</label>
<input type="{{ type }}" name="{{name}}" >
{% endmacro %}
{{input('用户名','username')}}
{{input('密码','password','password')}}
导入宏
在开发中,会将一些常用的宏单独放在一个文件中,在需要使用的时候,再从这个文件中进行导入。
import语句的用法跟python中的import类似:
import...as...
from...import...
from...import...as...
{% import 'macro.html' as my_input %}
{{ my_input.input_macro('用户名:','name')}}
{{ my_input.input_macro('密码:','password','password')}}
{% from 'macro.html' import input_macro %}
{{input_macro('用户名','name')}}
{{input_macro('提交',type='submit')}}