Jinja2条件在表达式内不匹配,该如何解决?

时间:2019-11-14 17:36:19

标签: jinja2

即使同时满足以下两个条件,我目前也无法解决在Jinja2模板中解析为if的第一个else语句的问题:

{%- elif frontend_type == 'beast' -%}
{{ radosgw_frontend_type }} {{ 'ssl_' if radosgw_frontend_ssl_certificate and haproxy_frontend_ssl_termination is sameas false else '' }}endpoint={{ _rgw_binding_socket }}{{ ' ssl_certificate='+radosgw_frontend_ssl_certificate if radosgw_frontend_ssl_certificate else '' }}
{%- endif -%}

有问题的代码段似乎是and haproxy_frontend_ssl_termination is sameas false,因为其他条件正常。我不确定为什么不满足此条件,即使它封装在{% %}中似乎可以在另一个模板中工作。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我怀疑您的问题是使用sameas测试。来自the documentation

  

sameas(值,其他)

     

检查对象是否指向与另一个对象相同的内存地址:

这几乎从来不是您想要做的。如果要检查表达式是否为假,则无需将其与false进行显式比较。例如,您可以简单地写:

{{ 'ssl_' if radosgw_frontend_ssl_certificate and not haproxy_frontend_ssl_termination else '' }}