繁体   English   中英

我怎么能得到 <select>用户使用Flask选择的标签选项?

[英]How can I get the <select> tag option chosen by the user using Flask?

我有一个表单,用户上传csv文件,然后csv文件转换为pandas数据帧,列标题自动填充表单中的<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">&times;</a>
            <strong>Success!</strong> {{success}}.
        </div>
        {% endif %}
        {% if error %}
        <div class="alert alert-warning">
            <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</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>

我的Flask代码:

@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的新手,所以可以提供一些帮助。

您必须为每个option value

<option value="{{ column }}">{{ column }}</option>

我设法搞清楚了。 我把表格分成两页分开。 因此, 文件上载部分在名为textform1.html的页面上采用自己的形式。 上传的文件将转换为pandas数据帧,然后将呈现名为textform2.html的新页面。 这个页面只包含自己形式的<select>部分,因此我可以从用户那里捕获选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM