Jinja2省略記法


180

私がこれを持っていると言います:

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

PHPでは、たとえば、次のような省略形の条件文を記述できます。

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

次に、これをjinja2テンプレートで機能するように変換できる方法はありますか?

'yes' if foo else 'no'

これが役立つかどうかはわかりませんが、php式はCのような言語で「三項演算子」と呼ばれるものとよく似ています。最後の行は、Pythonでは「条件式」と呼ばれていますが、Pythonでは三項演算子とも呼ばれています。とにかく、グーグル検索でそれらの名前を知るのに役立つかもしれないので、私はそれを言及します。
mgilson 2013年

回答:


350

はい、インラインif式を使用できます

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

74
の略記は次の{{ value if value else 'No value' }}ようになります{{ value or 'No value' }}
Don Grem 2014

11
@DorinGrecu私のコードは{{ tobe or 'Not to be' }}あなたのおかげでいっぱいではありません:)
dcohenb

14
変数を使用する必要がある場合は、内部で{% %}も使用できます。いいね{% set your_var = 'Update' if files else 'Continue' %}
jhpg 2017年

1
@dcohenbは別の質問として質問してください。;)
deed02392

3

別の方法(ただし、Pythonスタイルではありません。JSスタイルです)

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

1
この構成は、空の文字列を偽として解釈する言語には実際には適用できません。は意図したものではないにTrue and '' or 'a'評価されaます。
Gabriel Jablonski

しかし、python3は空の文字列をと解釈しますFalse。だからあなたが'' or 'a'Python を書けば答え'a'ます。たとえば、コメントをRubyに関連付けることができます
user3713526
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.