2015-04-04 3 views
10

मैं एक साधारण वेब एप्लिकेशन बनाने के लिए फ्लास्क/जिन्जा का उपयोग कर रहा हूं। मेरे पास रिकॉर्ड की एक सारणी है जिसे डीबी टेबल से लिया जाता है, और इसे वेबपृष्ठ द्वारा बुलाया जाता है जो रिकॉर्ड्स की सूची लोड करता है। प्रत्येक पंक्ति पर एक कॉलम पर एक ड्रॉपडाउन सूची (चयन HTML टैग का उपयोग करके किया जाता है) है।Jinja टेम्पलेट में चुनिंदा एचटीएमएल तत्व के लिए डिफ़ॉल्ट मान सेट करें?

मुझे एहसास है कि नीचे दिया गया कोड ऐसा नहीं करता है जो वर्तमान में किया गया है, वर्तमान में चयनित विकल्प के कारण अंतिम विकल्प (चौथा) स्वचालित रूप से चुना जाता है। मैंने यह दिखाने के लिए इसे छोड़ दिया है कि मैं क्या कार्यान्वित करने की कोशिश कर रहा हूं।

आदर्श रूप से मैं चाहता हूं कि यह वर्तमान रिकॉर्ड की स्थिति (नीचे दिए गए कोड में rec.status) को जांचें और उस पर निर्भर करता है, ड्रॉपडाउन में उपयुक्त आइटम का चयन करें।

HTML:

 <tbody> 
      {% for rec in records %} 
     <tr> 
      <td>{{ rec.task }}</td> 
      <td> 
      <select> 
       <option value ="zero" selected={{rec.status==0}}>Zero</option> 
       <option value ="first" selected={{rec.status==1}}>First</option> 
       <option value ="second" selected={{rec.status==2}}>Second</option> 
       <option value ="third" selected={{rec.status==3}}>Third</option> 
      </select> 
      </td> 
      <td><a href={{ "/update_status/"~rec.id}}>Update</a></td> 
     </tr> 
     {% endfor %} 
     </tbody> 

धन्यवाद!

उत्तर

9

आप सही रास्ते पर हैं - लेकिन वर्तमान में, आप अपने चयन बॉक्स में सभी विकल्पों में selected प्रिंट कर रहे हैं।

<select> 
     <option value="zero"{% if rec.status==0 %} selected="selected"{% endif %}>Zero</option> 
     <option value="first"{% if rec.status==1 %} selected="selected"{% endif %}>First</option> 
     <option value="second"{% if rec.status==2 %} selected="selected"{% endif %}>Second</option> 
     <option value="third"{% if rec.status==3 %} selected="selected"{% endif %}>Third</option> 
    </select> 
+0

ग्रेट, बस मुझे जो चाहिए! धन्यवाद! –

2

भविष्य Googlers के लिए::

आप WTForms का उपयोग करने और जिंजा में डिफ़ॉल्ट चयन सेट करना चाहते हैं, तो आप सपना हो सकता है आप केवल सही विकल्प पर चयनित मुद्रित करने के लिए कुछ इस तरह की कोशिश कर सकते इस तरह है कि कुछ काम कर सकता था:

{{ form.gender(class='form-control', value='male') }} 

लेकिन ऐसा नहीं है। न तो default='male' और न ही selected='male' (कम से कम मेरे लिए जिन्जा 2.8 और डब्ल्यूटीएफम्स 2.1 में नहीं)।

आप हताश हैं और अपने forms.py में यह स्थापित करने के लिए नहीं करना चाहते हैं और एक छोटे से hacky हो रही कोई आपत्ति नहीं है, तो आप ऐसा कर सकते हैं:

{{ form.gender(class='form-control hacky', value=data['gender']) }} 

<script> 
    var els = document.getElementsByClassName("hacky"); 
    for (i = 0; i < els.length; i++) { 
     els[i].value = els[i].getAttribute('value'); 
    } 
</script> 

यह पृष्ठ लोड पर सेट जावास्क्रिप्ट का उपयोग करके और अपने form.py के साथ गड़बड़ किए बिना SelectField में डिफ़ॉल्ट चयन को पास करने देता है। जिन्जा में ऐसा करने का शायद एक बेहतर तरीका है, लेकिन मुझे अभी तक यह नहीं मिला है।

संबंधित मुद्दे