42

私はこのようなhtmlファイルに複数選択を持っています:

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

次の方法でflask/pythonのmymultiselectフィールドにアクセスすると:

request.form['mymultiselect']

または、request.args.get関数を使用すると、選択した1つのアイテムのみが返されます。選択したすべてのアイテムを取得するには、次のようにフィールドの名前に[]を追加する必要があることを学びました。

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

firebugの投稿データを見ると、これが機能していることがわかりますが、flask / pythonでこのフィールドにアクセスしようとすると、nullまたはNoneとして返されます。

名前の末尾に「[]」が付いているこれらの複数選択フォームフィールドにどのようにアクセスしますか?Pythonコードのフィールド名にも「[]」を追加しようとしましたが、うまくいかないようです。

4

3 に答える 3

83

getlist()この関数を使用して、値のリストを取得します。

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

これを機能させるために名前を追加する必要はありません。[]実際、は[]役に立ちません。まったく使用しないでください。

于 2012-09-19T20:49:13.827 に答える
4

ここに画像の説明を入力してください>場合によっては、Ajax POSTメソッドを使用している場合は、[ネットワーク]タブでパラメーター名を確認してください。パラメータ名の確認方法を説明した添付画像を確認してください。

フラスコビューの場合:

パラメータ名に基づいてリスト応答にアクセスできます。

request.form.getlist('mymultiselect[]')

また

request.form.getlist('mymultiselect')
于 2020-04-16T15:39:43.810 に答える
0

辞書として値を取得する関数を作成できます

def __get_form_data(self, method='POST', compare_with=dict()):
    # Get form MiniFieldStorage items
    form = cgi.FieldStorage(fp=self.rfile, headers=self.headers, environ={ 'REQUEST_METHOD' : method })
    # Convert to dictionary
    return { key.rstrip('[]'):form.getlist(key) if key.endswith('[]') else form.getvalue(key) for key in form.keys() if compare_with.get(key)!=form.getvalue(key) }
于 2020-02-10T11:06:29.280 に答える