私は、ユーザーがcsvファイルをアップロードし、そのcsvファイルをpandasデータフレームに変換し、フォーム内の<select>
タグオプションを列ヘッダーに自動的に入力するという形式です。Flaskを使用してユーザーが選択した<select>タグオプションを取得するにはどうすればよいですか?
私は、ユーザーが希望する列を選択し、その列の選択肢をFlaskを使用して変数に保存します。
ただし、この選択タグからユーザーが選択したオプションを取得するのに問題があります。
マイテンプレートコード:
<form class="form-horizontal" action="" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Text Analytics</legend>
<div class="form-group form-group-lg">
<label for="inputData" class="col-lg-2 control-label">Choose Data File:</label>
<div class="col-lg-5">
<input type="file" class="form-control" required="required" autofocus="autofocus" name="inputData"/>
</div>
<div class="col-lg-3">
<button class="btn btn-primary" type="submit" name="upload">Upload</button>
</div>
{% if success %}
<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong>Success!</strong> {{success}}.
</div>
{% endif %}
{% if error %}
<div class="alert alert-warning">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong>Error:</strong> {{error}}.
</div>
{% endif %}
</div>
<div class="form-group form-group-lg">
<label for="colSelect" class="col-lg-2 control-label">Select column for analysis:</label>
<div class="col-lg-5">
<select class="form-control" name="colSelect" id="colSelect">
{% for column in columns %}
<option id="{{column}}">{{column}}</option>
{% endfor %}
</select>
</div>
マイフラスココード:
@app.route('/textanalytics', methods = ['GET', 'POST'])
def upload_file():
error = None
success = None
columns = []
col = None
if request.method == "POST":
if request.files['inputData'] == '':
error = "No file selected"
else:
file = request.files['inputData']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
success = 'File uploaded'
data = pd.read_csv(os.path.join(app.config['UPLOAD_FOLDER'], filename), header = 0, low_memory = False)
columns = [i for i in data.columns]
col = request.form.get('colSelect')
return render_template('textanalytics.html', success = success, columns = columns, col = col)
elif file and not allowed_file(file.filename):
error = 'Incorrect file type, .csv only'
return render_template('textanalytics.html', error = error)
return render_template('textanalytics.html', error = error, success = success, columns = columns, col = col)
app.add_url_rule('/uploads/<filename>', 'uploaded_file', build_only=True)
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/uploads': app.config['UPLOAD_FOLDER']})
あなたが見ることができるように、私はオプションが、どの運なしを取得するためにrequest.form.get('colSelect')
を使用しています。初期化された値であるNone
を返します。
私はそのコードを配置する場所と関係がありますが、私はFlaskには新しく、助けを借りてできると感じています。
まだ運がない、単に「なし」と表示されているだけです。 – daniel3412
ブラウザの要求に値が含まれていますか? – dirn
いいえ、何もありません。フラスコファイルに 'print col'ステートメントを追加しました。値が選択されていれば私の端末で見ることができました。それは' None'値を見る場所です。 – daniel3412