Jinja2宏使用

定义宏文件/tmp/my_macro.jinja2:

{% macro print_hello(i) -%}hello, {{ i }}{%- endmacro %}

在另外一个文件/tmp/main.jinja2中使用宏:


{# 这样导入的宏代码无法访问上下文变量,如果需要访问加上 with context ,比如 {% import 'my_macro.jinja2' as MRO  with context  %}  #}
{% import 'my_macro.jinja2' as MRO %} 
{{ MRO.print_hello("Mary")}}
{{ MRO.print_hello("Mark")}}

进行渲染/tmp/learn_jinja2.py

from jinja2.loaders import FileSystemLoader
from jinja2 import Environment

p = '/tmp/main.jinja2'

with open(p, 'r') as f:
    rtemplate = Environment(loader=FileSystemLoader("/tmp")).from_string(f.read())
    data = rtemplate.render({})
    print(data)

输出结果:


hello, Mary
hello, Mark
posted @ 2020-10-22 16:54  oaksharks  阅读(168)  评论(0编辑  收藏  举报