Jinja2 ชวเลขเงื่อนไข


180

พูดว่าฉันมีสิ่งนี้:

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

ใน PHP พูดว่าฉันสามารถเขียนเงื่อนไขชวเลขเหมือน:

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

มีวิธีที่ฉันสามารถแปลสิ่งนี้ให้ทำงานในเทมเพลต jinja2 ได้ไหม:

'yes' if foo else 'no'

ฉันไม่รู้ว่าสิ่งนี้จะช่วยได้หรือไม่ แต่การแสดงออกของ php นั้นดูเหมือนกับสิ่งที่เรียกว่า "ผู้ประกอบการที่สาม" ในภาษา C บรรทัดสุดท้ายเรียกว่า "การแสดงออกตามเงื่อนไข" ในไพ ธ อนถึงแม้ว่าฉันเคยเห็นมันเรียกว่าโอเปอร์เรเตอร์โอเพ่นในไพ ธ อนเช่นกัน อย่างไรก็ตามฉันพูดถึงมันอาจช่วยให้ทราบชื่อของสิ่งเหล่านั้นในการค้นหา google
mgilson

คำตอบ:


350

ใช่เป็นไปได้ที่จะใช้อินไลน์ if- นิพจน์ :

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

74
การจดชวเลข{{ value if value else 'No value' }}เป็นไปได้{{ value or 'No value' }}
Don Grem

11
@DorinGrecu รหัสของฉันยังไม่เต็ม{{ tobe or 'Not to be' }}ขอบคุณด้วย :) :)
dcohenb

14
หากคุณต้องการใช้ตัวแปรคุณสามารถใช้ภายในได้{% %}เช่นกัน ชอบ{% set your_var = 'Update' if files else 'Continue' %}
jhpg

1
@ dcohenb โปรดถามเป็นคำถามแยกต่างหาก ;)
deed02392

3

ทางเลือกอื่น (แต่ไม่ใช่สไตล์งูใหญ่มันเป็นสไตล์ JS)

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

1
โครงสร้างนี้ไม่สามารถใช้งานได้จริงในภาษาที่ตีความสตริงว่างเปล่าเป็นเท็จ True and '' or 'a'จะประเมินaซึ่งไม่ใช่สิ่งที่ตั้งใจไว้
Gabriel Jablonski

แต่ python3 Falseตีความสตริงที่ว่างเปล่าเป็น ดังนั้นถ้าคุณเขียนหลามจะตอบ'' or 'a' 'a'ดังนั้นความคิดเห็นของคุณอาจเกี่ยวข้องกับ Ruby เช่น
user3713526
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.