2012-09-19 10 views
16

içinde böyle html dosyasında bir multiselect vardır:Erişim Çoklu seçim Form Alanı Flask

<select multiple id="mymultiselect" name="mymultiselect">   
     <option value="1">this</option>  
     <option value="2">that</option>  
     <option value="3">other thing</option> 
</select> 

ben yoluyla şişe/Python mymultiselect alanını eriştiğinizde:

request.form['mymultiselect'] 

veya istek kullanarak .args.get işlevi sadece seçilen bir öğeyi döndürür. Öyle gibi, alan adının [] eklemek Ben seçilen tüm öğeleri almak için öğrendim:

<select multiple id="mymultiselect" name="mymultiselect[]">  
     <option value="1">this</option>  
     <option value="2">that</option>  
     <option value="3">other thing</option> 
</select> 
Bu çalıştığını kundakçı post verilerini görüntüleyerek görebilirsiniz

ama Bu alana flask/python'da erişmeye çalıştığımda her zaman sıfır veya Yok olarak geri gelir.

Adlarının sonunda "[]" olan bu çoklu formlu form alanlarına nasıl erişirsiniz? Python kodunda alan adına "[]" eklemeye çalıştım ama işe yaramadı.

cevap

43

Sen değerler listesini almak için getlist() function kullanmak istiyorum: Sen bu işi yapmak için isme [] eklemek değil ihtiyacı do

multiselect = request.form.getlist('mymultiselect') 

; Aslında, [] yardım etmeyecek, hiç kullanma.

+0

Yardım için teşekkürler. Ben yanlış bir şey yaptığımı biliyordum, hala balonun yeni ... – kj4ohh

+0

Bu beni bulmak için inanılmaz uzun sürdü - hata ayıklama bu Flask sorun olduğu bile net değil, sadece PHP'nin [] 'bulduğunu düşündüğümde Python/Flask'ı özellikle arayın. Neden "get" listeyi iade etmiyor? Bu davranışta hiç bir arzu göremiyorum. Bu, ilk öğeyi döndürmesiyle özellikle tuhaf. Gah. – OJFord

+0

Peki ya sadece bir eleman varsa? Ne zaman bir liste ve ne zaman tek bir değer döndürmeli? API burada açık; her zaman bir getiri döndürür. 'getlist' her zaman bir liste döndürür. –