1、三种语法:

    控制结构:{% %}

    变量取值:{{ }}

    注释:{# #}


2、变量:

    Jinja2识别所有的Python数据类型,包括列表、字典、对象等。

        A value from a dictionary: {{ mydict['key'] }}
        A value from a list: {{ mylist[3] }}
        A value from a list, with a variable index: {{ mylist[myintvar] }}
        A value from an object's method: {{ myobj.method() }}


3、Jinja2中的过滤器:

过滤器名

说明

safe

渲染值时不转义

capitalize

把值的首字母转换成大写,其他字母转换成小写

lower

把值转换成小写

upper

把值转换成大写

title

把值中每个单词的首字母转换成大写

trim

把值的首尾空格去掉

striptags

渲染之前把值中所有的HTML标签删掉

join

拼接多个值为字符串

replace

替换字符串的值

round

默认对数字进行四舍五入

int

把值转换为整型

    变量可以通过“过滤器”修改,过滤器与变量用管道(|)分隔。多个过滤器可以链式调用,前一个过滤器的输出会作为后一个过滤器的输入。

{{ "Hello World" | replace("Hello", "Goodbye") }}
    -> Goodbye World
{{ "Hello World" | replace("Hello", "Goodbye") | upper }}
    -> GOODBYE WORLD
{{ 43.5 | round }}
    -> 44.0
{{ 43.5 | round | int }}
    -> 44


4、Jinja2的if条件:

{% if user %}
    Hello, {{ user }}
{% else %}
    Hello, Stranger
{% endif %}


5、Jinja2的for循环:

{% for comment in comments %}
    {{ comment }}
{% endfor %}


6、Jinja2中的宏。类似于Python代码中的函数:

{% macro render_comment(comment) %}
    {{ comment }}
{% endmacro %}

{% for comment in comments %}
    render_comment(comment)
{% endfor %}


7、区分模版文件:

    通过 - template: jinja 指令声明一个sls文件是一个jinja模版文件。