Jinja2 में, यदि कोई चर अपरिभाषित है तो आप कैसे परीक्षण करते हैं? - django, jinja2

Django से कनवर्ट करना, मैं इस तरह कुछ करने के लिए प्रयोग किया जाता है:

{% if not var1 %} {% endif %}

और अगर यह संदर्भ में var1 नहीं डालता है तो यह काम कर रहा है। Jinja2 मुझे एक अपरिभाषित त्रुटि देता है। क्या कहने का कोई आसान तरीका है {% if var1 == None %} या इसी के समान?

उत्तर:

जवाब के लिए 183 № 1

Jinja2 से टेम्पलेट डिजाइनर प्रलेखन:

{% if variable is defined %}
value of variable: {{ variable }}
{% else %}
variable is not defined
{% endif %}

जवाब के लिए 11 № 2

{% if variable is defined %} वैरिएबल है तो सच है None

जबसे not is None अनुमति नहीं है, इसका मतलब है कि

{% if variable != None %}

वास्तव में आपका एकमात्र विकल्प है।


जवाब के लिए 10 № 3

पर्यावरण सेटअप में, हमने किया था undefined = StrictUndefined, जिसने अपरिभाषित मानों को किसी भी चीज़ पर सेट करने से रोका। यह तय है:

from jinja2 import Undefined
JINJA2_ENVIRONMENT_OPTIONS = { "undefined" : Undefined }

उत्तर के लिए 7 № 4

आप इस तरह के jinja2 टेम्पलेट में एक वैरिएबल को भी परिभाषित कर सकते हैं:

{% if step is not defined %}
{% set step = 1 %}
{% endif %}

और फिर आप इसे इस तरह उपयोग कर सकते हैं:

{% if step == 1 %}
<div class="col-xs-3 bs-wizard-step active">
{% elif step > 1 %}
<div class="col-xs-3 bs-wizard-step complete">
{% else %}
<div class="col-xs-3 bs-wizard-step disabled">
{% endif %}

अन्यथा (यदि आप उपयोग नहीं करेंगे {% set step = 1 %}) ऊपरी कोड फेंक देगा:

UndefinedError: "step" is undefined

उत्तर के लिए 1 № 5

{% if variable is defined %} यह जांचने के लिए काम करता है कि कुछ अपरिभाषित है या नहीं।

आप उपयोग करने से दूर हो सकते हैं {% if not var1 %} यदि आप अपने चर को गलत उदाहरण के लिए डिफ़ॉल्ट करते हैं

class MainHandler(BaseHandler):
def get(self):
var1 = self.request.get("var1", False)

उत्तर के लिए 1 № 6

यदि आपको आवश्यकता है तो डिफ़ॉल्ट फ़िल्टर का उपयोग करने पर विचार करें। उदाहरण के लिए:

{% set host = jabber.host | default(default.host) -%}

या कुछ ऐसा:

{% set timeout = config.timeout | default(42) -%}

संबंधित सवाल
सबसे लोकप्रिय