Linux工具篇--ansible渲染文件jinjia冷门用法1

197 阅读2分钟

Jinja2 是一个流行的 Python 模板引擎,它可以帮助我们将数据渲染到各种格式的文档中,如 HTML、XML、Markdown 等。工作中由于jinjia2只是一个模板渲染辅助功能,对于很多的使用场景有局限性,导致使用起来很不方便,记录列举一些冷门适用用法,提升使用价值和代码可读性。

变量赋值
{% set name="123" %}
{% with name="456" %}
{% endwith %}
for使用

使用内置常量,定义for循环范围,注意:不可使用continue和break来控制循环

loop.index当前迭代的索引(从1开始)
loop.index0当前迭代的索引(从0开始)
loop.first是否是第一次迭代,返回True/False
loop.last是否是最后一次迭代,返回True/False
loop.length序列的长度
{% for i in list %}
{% if loop.first %}
{{ arrvied }}
{% endif %}
{% endfor %}
运算符
  • +号运算符:可以完成数字相加,字符串相加,列表相加。但是并不推荐使用+运算符来操作字符串,字符串相加应该使用~运算符。
  • -号运算符:只能针对两个数字相减。
  • /号运算符:对两个数进行相除。
  • %号运算符:取余运算。
  • *号运算符:乘号运算符,并且可以对字符进行相乘。
  • **号运算符:次幂运算符,比如2**3=8。
  • in操作符:跟python中的in一样使用,比如{{1 in [1,2,3]}}返回true
  • ~号运算符:拼接多个字符串,比如{{"Hello" ~ "World"}}将返回HelloWorld
列表
first:取第一个元素
<p>{{ [1,2,3,4,5,6] | first }}</p>
​
last:取最后一个元素
<p>{{ [1,2,3,4,5,6] | last }}</p>
​
length:获取列表长度
<p>{{ [1,2,3,4,5,6] | length }}</p>
​
sum:列表求和
<p>{{ [1,2,3,4,5,6] | sum }}</p>
​
sort:列表排序
<p>{{ [6,2,3,1,5,4] | sort }}</p>
TEST判断
  • callable(object) 判断变量是否对象
  • defined(value) 变量是否被定义
  • divisibleby(value, num) 检查变量是否被整除
  • lower(value) 判断变量是否是小写
  • none(value) 变量为none返回true
  • number(value) 判断变量是否为数字
  • string(value) 判断变量是否为字符串
  • upper(value) 变量是否是大写
{% if user.age is equalto(42) %}
Ha, you are 42!
{% endif %}