2012-09-19 12 views
16

Ich habe eine Mehrfachauswahl in html-Datei wie folgt:Zugang Multiselect Formularfeld in Flask

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

Wenn ich auf das mymultiselect Feld in Kolben/Python über:

request.form['mymultiselect'] 

oder durch die Anforderung mit .args.get-Funktion gibt nur einen ausgewählten Artikel zurück. Ich habe gelernt, dass alle ausgewählten Elemente zu bekommen ich hinzufügen müssen [] auf den Namen des Feldes, etwa so:

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

ich durch Anzeigen der Post-Daten in Firebug sehen, dass dies funktioniert, aber Wenn ich versuche, auf dieses Feld in flask/python zuzugreifen, kommt es als null oder None zurück.

Wie greifen Sie auf diese Multiselect-Formularfelder zu, die am Ende ihres Namens "[]" haben? Ich habe versucht, "[]" an den Feldnamen im Python-Code anzufügen, aber das scheint nicht zu funktionieren.

Antwort

43

Sie wollen die getlist() function verwenden, um eine Liste von Werten zu erhalten:

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

Sie tun nicht Notwendigkeit [] den Namen hinzuzufügen, diese Arbeit zu machen; in der Tat wird die [] nicht helfen, verwenden Sie es überhaupt nicht.

+0

Danke für die Hilfe. Ich wusste, dass ich etwas falsch mache, immer noch neu in Flasch ... – kj4ohh

+0

Das hat mich unglaublich lange gebraucht - es ist noch nicht einmal klar, dass Flask das Problem ist, erst als ich PHP '' [] 'gefunden habe, dachte ich suche speziell nach Python/Flask. Eine Idee, warum 'Get' die Liste nicht zurückgibt? Ich kann in diesem Verhalten überhaupt keine Erwünschtheit sehen ... Es ist besonders merkwürdig, da 'get' das erste Element zurückgibt. Gah. – OJFord

+0

Was ist, wenn es nur ein Element gibt? Wann sollte eine Liste und wann ein einzelner Wert zurückgegeben werden? Die API ist hier explizit; 'get' gibt immer einen Wert zurück. 'getlist' gibt immer eine Liste zurück. –