Jinja2 steno koşullu


180

Diyelim ki:

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

PHP, diyelim ki, gibi bir steno koşul yazabilirsiniz:

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

O zaman ben bu jinja2 şablon çalışmak için çevirmek bir yolu var mı:

'yes' if foo else 'no'

Bunun yardımcı olup olmadığını bilmiyorum, ancak php ifadesi C benzeri dillerde "üçlü operatör" olarak adlandırılana çok benziyor. Python'da üçlü koşul olarak adlandırıldığımı görsem de, son satıra pitonda "koşullu ifade" denir. Her neyse, bir google aramasında bu şeylerin adlarını bilmeye yardımcı olabileceğinden bahsediyorum.
mgilson

Yanıtlar:


350

Evet, satır içi if ifadeleri kullanmak mümkündür :

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

74
Bir kestirme {{ value if value else 'No value' }}olurdu{{ value or 'No value' }}
Don Grem

11
@DorinGrecu Kodum {{ tobe or 'Not to be' }}teşekkürler sayesinde dolu değil :)
dcohenb

14
Bir değişken kullanmanız gerekiyorsa, içinde {% %}de kullanabilirsiniz . Beğen{% set your_var = 'Update' if files else 'Continue' %}
jhpg

1
@dcohenb lütfen ayrı bir soru olarak sorun. ;)
deed02392

3

Alternatif yol (ama python tarzı değil. JS tarzı)

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

1
Bu yapı, boş bir dizgiyi yanlış olarak yorumlayan diller için geçerli değildir. True and '' or 'a'değerlendirilecek a, amaçlanan bu değil.
Gabriel Jablonski

Ancak python3, boş dizeyi olarak yorumlar False. Yani '' or 'a'python yazarsanız cevap verecektir 'a'. Böylece yorumunuz Ruby ile ilgili olabilir
user3713526
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.