如何获取jinja2模板中列表中的元素数量?
例如,在Python中:
print(template.render(products=[???]))
Run Code Online (Sandbox Code Playgroud)
在jinja2
<span>You have {{what goes here?}} products</span>
Run Code Online (Sandbox Code Playgroud) 从Django转换,我习惯做这样的事情:
{% if not var1 %} {% endif %}
Run Code Online (Sandbox Code Playgroud)
如果我没有将var1放入上下文中,并使其工作.Jinja2给了我一个未定义的错误.是否有简单的说法{% if var1 == None %}或类似方式?
我users在我的角色里面定制了linux 创建.我需要让我的角色的用户自定义home_directory,group_name,name,password.
我想知道是否有更灵活的方法来应对默认值.
我知道下面的代码是可能的:
- name: Create default
user:
name: "default_name"
when: my_variable is not defined
- name: Create custom
user:
name: "{{my_variable}}"
when: my_variable is defined
Run Code Online (Sandbox Code Playgroud)
但正如我所提到的,有很多可选变量,这会产生很多可能性.
是否有类似上面的代码?
user:
name: "default_name", "{{my_variable}}"
Run Code Online (Sandbox Code Playgroud)
代码应该name="default_name"在my_variable未定义时设置.
我可以设置所有变量defaults/main.yml并创建用户:
- name: Create user
user:
name: "{{my_variable}}"
Run Code Online (Sandbox Code Playgroud)
但是这些变量都在一个非常大的哈希中,并且哈希中有一些哈希不能作为默认值.
jinja2使用过滤器'| default()'来处理未定义的变量.但它不适用于字典值.
如果D可能有或没有密钥foo(D [foo]),那么:
{{ D[foo]|default ('no foo') }}
Run Code Online (Sandbox Code Playgroud)
如果D未定义,将打印'no foo',但如果定义了D,则会导致错误('dict对象'没有属性'foo'),但D [foo]未定义.
有没有办法让字典项目默认?