首页 > 解决方案 > 如何在 Flask 中使用输入框设置变量

问题描述

我想使用输入框在 Flask 中声明变量。

但是,我收到此错误消息:

werkzeug.exceptions.BadRequestKeyError:400 错误请求:浏览器(或代理)发送了此服务器无法理解的请求。键错误:'column1'

但我清楚地命名了我的输入框......

我的烧瓶代码app.py

@app.route('/', methods=['POST', 'GET'])
def get_columns():
    col1 = request.form["column1"]
    col2 = request.form["column2"]
    return col1, col2

def upload_file():
    file = request.files['file']
    col1,col2 =get_columns()

    print("file:",file)

    if file.filename == '':
        flash('No file selected for uploading','red')
        # return redirect(request.url)
        return render_template('index.html', disp_div = disp_div)
    if file and allowed_file(file.filename):
        df=pd.read_csv(file)
        output=col1,col2,df["Age"].mean().round(2)
        return render_template('index.html', output=output)
        # return redirect('/')
    else:
        flash('Allowed file types are txt, pdf, png, jpg, jpeg, gif', 'red')
        # return redirect(request.url)
        return render_template('index.html')

我的神社模板index.html

...
          <tr>
              <td><form action="/" method="POST">
                      <input name="column1" id="column1" placeholder="Spaltenname der XXX">
                  </form>
              </td>

              <td><form action="/" method="POST">
                        <input name="column2" id="column2" placeholder="Spaltenname der YYY">
                  </form>
              </td>
          </tr>
....

标签: pythonhtmlflask

解决方案


您的 HTML 中有 2 个表单。两人都指向get_columns()
但是python代码假设它会同时得到它们(column1 AND column2)。
这是错误的——python 代码将得到 column1 或 column2——而不是两者。


推荐阅读