【问题标题】:Jinja2 shorthand conditionalJinja2 简写条件
【发布时间】:2012-12-22 07:16:52
【问题描述】:

说我有这个:

{% if files %}
    Update
{% else %}
    Continue
{% endif %}

在 PHP 中,比如说,我可以写一个简写的条件,比如:

<?php echo $foo ? 'yes' : 'no'; ?>

有没有一种方法可以将其翻译为在 jinja2 模板中工作:

'yes' if foo else 'no'

【问题讨论】:

  • 我不知道这是否有帮助,但 php 表达式看起来很像 C 语言中所谓的“三元运算符”。最后一行在 python 中称为“条件表达式”,尽管我已经看到它在 python 中也称为三元运算符。无论如何,我提到它是因为它可能有助于在谷歌搜索中了解这些事物的名称。

标签: python jinja2 conditional-operator


【解决方案1】:

是的,可以使用inline if-expressions

{{ 'Update' if files else 'Continue' }}

【讨论】:

  • {{ value if value else 'No value' }} 的简写是 {{ value or 'No value' }}
  • @DorinGrecu 我的代码未满{{ tobe or 'Not to be' }} 谢谢你:)
  • 如果需要使用变量,也可以在{% %}里面使用。喜欢{% set your_var = 'Update' if files else 'Continue' %}
【解决方案2】:

另一种方式(但不是python风格,是JS风格)

{{ files and 'Update' or 'Continue' }}

【讨论】:

  • 这种结构实际上不适用于将空字符串解释为虚假的语言。 True and '' or 'a' 将评估为 a,这不是预期的。
猜你喜欢
  • 1970-01-01
  • 2012-09-21
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
相关资源
最近更新 更多