Jinja2 singkatan tulisan tangan


180

Katakan saya punya ini:

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

Dalam PHP, katakanlah, saya dapat menulis conditional stance, seperti:

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

Apakah ada cara saya bisa menerjemahkan ini agar berfungsi di templat jinja2:

'yes' if foo else 'no'

Saya tidak tahu apakah ini membantu, tetapi ekspresi php sangat mirip dengan apa yang disebut "operator ternary" dalam bahasa mirip C. Baris terakhir disebut "ekspresi kondisional" dengan python, meskipun saya pernah melihatnya disebut operator ternary dengan python juga. Lagi pula, saya menyebutkannya karena mungkin membantu untuk mengetahui nama-nama hal-hal itu dalam pencarian google.
mgilson

Jawaban:


350

Ya, dimungkinkan untuk menggunakan in -if-expressions :

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

74
Sebuah singkatan {{ value if value else 'No value' }}adalah{{ value or 'No value' }}
Don Grem

11
@DorinGrecu Kode saya tidak lengkap dengan {{ tobe or 'Not to be' }}terima kasih :)
dcohenb

14
Jika Anda perlu menggunakan variabel, Anda juga bisa menggunakannya {% %}. Seperti{% set your_var = 'Update' if files else 'Continue' %}
jhpg

1
@dcohenb tolong ajukan pertanyaan terpisah. ;)
deed02392

3

Cara alternatif (tapi itu bukan gaya python. Ini gaya JS)

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

1
Konstruk ini tidak benar-benar berlaku dalam bahasa yang mengartikan string kosong sebagai falsy. True and '' or 'a'akan mengevaluasi untuk a, yang bukan apa yang dimaksudkan.
Gabriel Jablonski

Tapi python3 mengartikan string kosong sebagai False. Jadi jika Anda menulis '' or 'a'python akan menjawab 'a'. Jadi komentar Anda dapat dikaitkan dengan Ruby misalnya
user3713526
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.