2016-06-30 13 views
1

Wenn ich ein Formular wie folgt senden:Handhabung Array als Formularname in der Flasche

<form method="POST" ...> 
    <input type="text" name="filters[price_from]"> 
    <input type="text" name="filters[price_to]"> 
</form> 

zu PHP-Skript erstellt es automatisch ein Array, und ich kann Variablen wie folgt zugreifen:

$_POST['filters']['price_to'] 

und:

$_POST['filters'] 

ist iterable

UND das ist meine Frage, wie kann ich denselben Effekt in FLASK bekommen?

request.form.getlist('filters') 

return [] (leere Liste)

request.form.get('filters[price_from]') 

Rückgaberecht Wert, aber das ist nicht das Ergebnis von denen sie erwarten (es ist nicht durchsuchbar).

Sollte ich mein Formular neu erstellen oder eine andere Methode verwenden?

Antwort

0

Sie können nicht mit einem Schlüssel auf ein Python-Array/Liste zugreifen, wenn Sie mit einem Schlüssel auf Ihre Daten zugreifen möchten, speichern Sie Ihr filters Objekt als json, dann können Sie mit einem Schlüssel auf die Daten zugreifen.

<form method="POST" enctype="application/JSON"> 
    <input type="text" name="filters[price_from]" value="" > 
    <input type="text" name="filters[price_to]" value="" > 
</form> 

filters = request.get_json() 

filters['price_from'] #returns price_from value 
filters['price_to'] #returns price_to value 

In PHP ein Array ist mehrere Dinge.

Ein Array in PHP ist eigentlich eine geordnete Karte. Eine Map ist ein Typ, der den Schlüsseln Werte zuordnet. Dieser Typ ist für verschiedene Verwendungszwecke optimiert. Es kann als Array, Liste (Vektor), Hash-Tabelle (eine Implementierung einer Karte), Wörterbuch, Sammlung, Stapel, Warteschlange und wahrscheinlich mehr behandelt werden.

Während in Python ein Array ist nur ein Index zugegriffen list.

>>> filters = ['price_from', 'price_to'] 
>>> filters[0] 
'price_from' 
>>> filters[1] 
'price_to' 

Und ein dict wird per Schlüssel aufgerufen.

>>> filters = {'price_from':'value', 'price_to':'another_value'} 
>>> filters['price_from'] 
'value' 
>>> filters['price_to'] 
'another_value' 
+0

Bei Kolben 0.11.1 (Python 3.4) request.form.getlist ('Filter') return []. request.form.getlist ('filters []') gibt dasselbe zurück. Die zweite Möglichkeit besteht darin, die Liste zurückzugeben, wenn der Name der Formulareingabe 'filters []' ist, aber dann habe ich keinen Schlüssel, nur einen Wert. – shinji

+0

@shinji Sie greifen auf eine Liste mit dem Index zu, d. H. Filter [0], Filter [1]. Um auf die Daten über den Namen oder Schlüssel zuzugreifen, d. H. Filter ['price_to'], müssen Sie sie in einem Diktat speichern. – roy