2013-05-22 6 views
7

किसी अन्य पोस्ट जो समान समस्या है नहीं मिला के लिए, मैं कुप्पी और wtforms के साथ कुछ चेक बॉक्स उत्पन्न करने के लिए, कोशिश कर रहा हूँ इस समय मैं कोड के इस टुकड़े मिल गया है:Jinja2 खाका - पाश

<div class="control-group"> 
    <p><strong>Check the enabled BRI Ports</strong></p> 
    <label class="checkbox inline"> 
     {{ form.bri1(value=1) }} {{ form.bri1.label }} 
    </label> 
    <label class="checkbox inline"> 
     {{ form.bri2(value=1) }} {{ form.bri2.label }} 
    </label> 
    <label class="checkbox inline"> 
     {{ form.bri3(value=1) }} {{ form.bri3.label }} 
    </label> 
    <label class="checkbox inline"> 
     {{ form.bri4(value=1) }} {{ form.bri4.label }} 
    </label> 
</div> 

यह अब तक काम करता है, लेकिन अब मैं की तरह एक साधारण के लिए लूप के साथ ऐसा करने की कोशिश:

<div class="control-group"> 
    <p><strong>Check the enabled BRI Ports</strong></p> 
    {% for n in range(1,6) %} 
    <label class="checkbox inline"> 
     {{ form.brin.label }} 
    {% endfor %} 
</div> 

मैं के साथ (करने की कोशिश की), {} और {{}} ... यह और भी हो सकता है?

+0

यह फ्लास्क के बारे में कोई सवाल नहीं है, क्योंकि फ्लास्क में टेम्पलेट इंजन शामिल नहीं है। संभवतः आप Jinja2 के बारे में पूछ रहे हैं? –

+0

क्षमा करें मेरी गलती, आप पूरी तरह से सही हैं। – Kilrathy

+0

@ किलरथी तो समस्या "रेंज" के साथ है? क्या [यह] (http://stackoverflow.com/q/6036082/1205368) मदद करता है? – Salem

उत्तर

12

प्रयास करें:

<div class="control-group"> 
    <p><strong>Check the enabled BRI Ports</strong></p> 
    {% for name, field in form._fields.items() %} 
     {% if name != 'csrf_token' %} 
      <label class="checkbox inline"> 
       {{ field(value=1) }} {{ field.label }} 
      </label> 
     {% endif %} 
    {% endfor %} 
</div> 

वहाँ आप के बजाय form._fields.items() या हालत बजाय {% if name != 'csrf_token' %} छँटाई सेट कर सकते हैं। या:

<div class="control-group"> 
    <p><strong>Check the enabled BRI Ports</strong></p> 
    {% for n in range(1,6) %} 
     {% if form['bri' + n|string] %} 
      <label class="checkbox inline"> 
       {{ form['bri' + n|string](value=1) }} {{ form['bri' + n|string].label }} 
      </label> 
     {% endif %} 
    {% endfor %} 
</div> 

वहाँ आप भी n.__str__() का उपयोग करने के बजाय फ़िल्टर कर n|string कर सकते हैं।

+0

मैंने दोनों की कोशिश की, दूसरा मुझे त्रुटि देता है "TypeError: 'str' और 'int' ऑब्जेक्ट्स को संयोजित नहीं कर सकता"। मुट्ठी आंशिक रूप से काम करता है, लेकिन यह मुझे सभी फ़ील्ड देता है, मैं केवल बूलियनफिल्ड bri1-4 चाहता हूं ... कोई विचार? – Kilrathy

+1

क्षमा करें, मैंने दूसरा उदाहरण अपडेट किया है। सबसे पहले आप अपनी हालत जोड़ सकते हैं: '{% अगर name.startswith ('bri')%}'। – tbicr

+0

अरे बहुत बहुत धन्यवाद! यह मेरे लिए perfekt काम करता है! – Kilrathy