2013-11-22 4 views
8

मैंने दस्तावेज़ पढ़े और मैं इस पर स्पष्ट नहीं हूं कि यह बिल्कुल सही है। मुझे पता है कि आप लूप के लिए नेस्टेड का उपयोग कर सकते हैं, लेकिन अगर बयान अलग दिखते हैं।क्या जिन्जा 2 बयान के मामले में घोंसला का समर्थन करता है?

क्या मैं निम्नलिखित कर सकता हूं?

{% if thing=true %} 
<div> something here</div> 
    {% if diffthing=true %} 
    <div> something else</div> 
    {% else %} 
    <div> third thing</div> 
    {% endif %} 
{% else %} 
<div> nothing here </div> 
{% endif %} 

या प्रारूप किसी भी तरह अलग होना चाहिए?

उत्तर

1

उत्तर हाँ है।

मैं लाइव एप्लिकेशन में आपके समान तर्क का उपयोग कर रहा हूं और अगर ब्लॉक अपेक्षित काम करता है तो घोंसला का उपयोग कर रहा हूं। यदि आप अपना कोड साफ नहीं रखते हैं तो यह थोड़ा उलझन में पड़ सकता है, लेकिन यह ठीक काम करता है।

7

जिनजा 2 नेस्टेड ब्लॉक का समर्थन करता है, जिसमें बयान और अन्य नियंत्रण संरचनाएं शामिल हैं।

Block Nesting and Scope पर प्रलेखन देखें: "अधिक जटिल लेआउट के लिए ब्लॉक को घोंसला जा सकता है।"

इस के लिए एक अच्छा उपयोग के मामले मैक्रो लिख रहा है कि सशर्त आउटपुट HTML:

{# A macro that generates a list of errors coming back from wtforms's validate function #} 
{% macro form_error_summary(form, li_class='bg-danger') %} 
    {# only do the following on error... #} 
    {% if form.errors %} 

     <ul class="errors"> 

     {# you can do layers of nesting as needed to render your content #} 
     {% for _field in form %} 
      {% if _field.errors %} 
       {% for error in _field.errors %}     
        <li class={{li_class}}>{{_field.label}}: {{ error|e }}</li> 
       {% endfor %} 
      {% endif %} 
     {% endfor %} 
     </ul> 

    {% endif %} 
{% endmacro %} 
संबंधित मुद्दे