2015-04-04 20 views
10

Basit bir web uygulaması yapmak için flask/jinja kullanıyorum. Bir db tablosundan alınan ve kayıt listesini yükleyen bir web sayfası tarafından çağrılan bir kayıt tablom var. Her satırda bir sütun üzerinde bir açılan liste (select HTML etiketini kullanarak yapılır) vardır.Jinja şablonunda html öğesini seçmek için varsayılan değeri ayarlayın.

Aşağıdaki kodun, ne yapması gerekeni yapmadığını anlıyorum, seçili etiket nedeniyle otomatik olarak son seçenek (dördüncü) seçilir. Ne yapmaya çalıştığımı göstermeyi denemek için onu bıraktım.

İdeal mevcut kaydın durumunu (aşağıdaki kodda rec.status) ve bağlı açılır listede uygun öğeyi seçmek kontrol etmek isterdi.

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> 

teşekkürler!

cevap

9

Sen doğru yoldasın - ancak şu anda, kendi seçme kutusundaki tüm seçenekleri selected baskı ediyoruz. Gelecekteki Google Çalışanları için

<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

Harika, sadece ihtiyacım olan şey! Teşekkürler! –

2

:

Eğer WTForms kullanarak ve Jinja varsayılan seçimi ayarlamak istiyorsanız ediyorsanız, hayal olabilir sadece doğru seçeneği seçili basmak için böyle bir şey deneyebilirsiniz Bunun gibi bir şey işe yarayabilir:

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

ama yapmaz. Ne default='male' ne de selected='male' (en azından Jinja 2.8 ve WTForms 2.1'de benim için değil).

Umutsuz ve forms.py bunu ayarlamak istemiyorum ve biraz hacky alma sakıncası yoksa

, bunu yapabilirsiniz:

{{ 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> 

Bu sayfa yüklemesinde ayarlar JavaScript kullanarak ve forms.py ile uğraşmak zorunda kalmadan SelectField'daki varsayılan seçimi iletmenize izin verir. Bunu Jinja'da yapmanın daha iyi bir yolu var, ama henüz bulamadım.

İlgili konular