जिनजा 2 शॉर्टहैंड सशर्त


180

कहो कि मेरे पास यह है:

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

PHP में, कहते हैं, मैं एक शॉर्टहैंड सशर्त लिख सकता हूं, जैसे:

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

वहाँ तो एक तरह से मैं jinja2 टेम्पलेट में काम करने के लिए इसका अनुवाद कर सकता हूं:

'yes' if foo else 'no'

मुझे नहीं पता कि यह मदद करता है, लेकिन php अभिव्यक्ति बहुत कुछ ऐसी दिखती है जिसे सी-लाइक भाषाओं में "टर्नेरी ऑपरेटर" कहा जाता है। अंतिम पंक्ति को अजगर में "सशर्त अभिव्यक्ति" कहा जाता है, हालांकि मैंने इसे अजगर में टर्नरी ऑपरेटर भी कहा है। वैसे भी, मैं इसका उल्लेख करता हूं क्योंकि यह उन चीजों के नाम जानने में मदद कर सकता है जो Google खोज में हैं।
mgilson

जवाबों:


350

हाँ, यदि इन-एक्सप्रेशन का उपयोग इनलाइन करना संभव है :

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

74
इसके लिए एक आशुलिपि {{ value if value else 'No value' }}होगी{{ value or 'No value' }}
डॉन गेर्म

11
@DorinGrecu मेरा कोड {{ tobe or 'Not to be' }}आपके लिए धन्यवाद के साथ पूरा नहीं है :)
dcohenb

14
यदि आपको एक चर का उपयोग करने की आवश्यकता है, तो आप अंदर {% %}भी उपयोग कर सकते हैं । जैसे{% set your_var = 'Update' if files else 'Continue' %}
jhpg

1
@dcohenb कृपया एक अलग प्रश्न पूछें। ;)
deed02392

3

वैकल्पिक तरीका (लेकिन यह अजगर शैली नहीं है। यह जेएस शैली है)

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

1
यह निर्माण वास्तव में उन भाषाओं में लागू नहीं होता है जो एक खाली स्ट्रिंग को मिथ्या मानते हैं। True and '' or 'a'का मूल्यांकन करेगा a, जो कि इरादा नहीं था।
गेब्रियल जबलोनस्की

लेकिन python3 के रूप में खाली स्ट्रिंग की व्याख्या करता है False। तो अगर आप लिखेंगे '' or 'a'अजगर जवाब देगा 'a'। तो आपकी टिप्पणी उदाहरण के लिए रूबी से संबंधित हो सकती है
user3713526
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.