2012-09-19 34 views
16

Tengo una selección múltiple en el archivo html como esto:forma del acceso Selección múltiple de campo en el frasco

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

Cuando tengo acceso al campo mymultiselect en el frasco/pitón a través de:

request.form['mymultiselect'] 

o mediante el uso de la solicitud La función .args.get solo devuelve un elemento seleccionado. He aprendido que para obtener todos los elementos seleccionados tengo que añadir [] para el nombre del campo, así:

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

puedo ver mediante la visualización de los datos de correos en Firebug que esto está funcionando, pero Siempre que intento acceder a este campo en el matraz/pitón aparece como nulo o Ninguno.

¿Cómo se accede a estos campos de formulario multiselect que tienen "[]" al final de su nombre? También intenté anexar "[]" al nombre del campo en el código python, pero parece que no funciona.

Respuesta

43

que desea utilizar el getlist() function para obtener una lista de valores:

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

Haces no necesidad de añadir [] al nombre para hacer este trabajo; de hecho, el [] no ayudará, no lo use en absoluto.

+0

Gracias por la ayuda. Sabía que estaba haciendo algo mal, todavía nuevo en el matraz ... – kj4ohh

+0

Esto me llevó increíblemente largo encontrarlo: depurar esto ni siquiera está claro que Flask sea el problema, solo cuando encontré el '[]' de PHP que pensé busca Python/Flask específicamente. ¿Alguna idea de por qué 'get' no devuelve la lista? No puedo ver ninguna deseabilidad en este comportamiento en absoluto ... Es particularmente extraño ya que 'get' devuelve el primer elemento. Gah. – OJFord

+0

Entonces, ¿qué ocurre si solo hay un elemento? ¿Cuándo debería 'get' devolver una lista y cuándo un único valor? La API es explícita aquí; 'get' devuelve un valor, siempre. 'getlist' devuelve una lista, siempre. –

Cuestiones relacionadas