Flaskが初めてで、選択タグから値を取得するのに問題があります。悪いリクエストを返す_request.form['comp_select']
_を試しました。しかし、request.form.get('comp_select')
、戻りページは空のリスト「[]」を返します。
私のhtml:
_<form class="form-inline" action="{{ url_for('test') }}">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Please select</span>
<select name="comp_select" class="selectpicker form-control">
{% for o in data %}
<option value="{{ o.name }}">{{ o.name }}</option>
{% endfor %}
</select>
</div>
<button type="submit" class="btn btn-default">Go</button>
</div>
</form>
_
私のapp.py:
_@app.route("/test" , methods=['GET', 'POST'])
def test():
select = request.form.get('comp_select')
return(str(select)) # just to see what select is
_
投稿の書式設定がオフの場合は事前に申し訳ありません(これもStack Overflowの新機能です)。
あなたが提供したものから確実に知ることは難しいですが、あなたは_method="POST"
_を_<form>
_要素に追加する必要があると思います。
フォームデータ(POSTまたはPUT要求で送信されるデータ)にアクセスするには、form属性を使用できます。.. URL(?key = value)で送信されたパラメーターにアクセスするには、 args属性。
したがって、POSTを使用してフォームを送信する場合は、request.form.get()
を使用します。 GETでフォームを送信する場合は、request.args.get()
を使用します。
このアプリの動作は次のとおりです。
flask_app.py:
_#!/usr/bin/env python
from flask import Flask, flash, redirect, render_template, \
request, url_for
app = Flask(__name__)
@app.route('/')
def index():
return render_template(
'index.html',
data=[{'name':'red'}, {'name':'green'}, {'name':'blue'}])
@app.route("/test" , methods=['GET', 'POST'])
def test():
select = request.form.get('comp_select')
return(str(select)) # just to see what select is
if __name__=='__main__':
app.run(debug=True)
_
templates/index.html
_<form class="form-inline" method="POST" action="{{ url_for('test') }}">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Please select</span>
<select name="comp_select" class="selectpicker form-control">
{% for o in data %}
<option value="{{ o.name }}">{{ o.name }}</option>
{% endfor %}
</select>
</div>
<button type="submit" class="btn btn-default">Go</button>
</div>
</form>
_