从HTML表单提交值并在Flask视图中访问它们

8 投票
2 回答
11450 浏览
提问于 2025-04-19 21:37

我有一个HTML表单,它会发送数据到Flask的一个路由。但是,request.form是空的。如果我试着通过ID访问其中一个值,就会出现400错误。我该如何从HTML表单发送值,并在Flask中访问这些值呢?

<form method="POST">
  <input id="my_input" type="text" value="{{ email }}">
  <input id="my_submit" type="submit" value="Submit">
</form>
@app.route('/page', methods=['POST', 'GET'])
def get_page():
    if request.method == 'POST':
        print(request.form)  # prints ImmutableMultiDict([])
        print(request.form['my_input'])  # raises 400 error
    return render_template('page.html')

2 个回答

-2

你需要在HTML页面中指定表单的动作方法,然后在标签里写上文本框的名字。

<form method="POST" action="/PythonFunctionName">
  <input id="my_input" type="text" name="HTMLControlName" value="{{ email }}">
  <input id="my_submit" type="submit" value="Submit">
</form>

然后在.py文件中,使用HTML标签里指定的名字来访问这个元素。

@app.route('/PythonFunctionName', methods=['POST', 'GET'])
def getPage():
    if request.method == 'POST':
        strTextBoxVal= request.form['HTMLControlName'])
        Print(strTextBoxVal) 
    return render_template('page.html')
12

你的input没有一个叫做name的属性。这个属性是客户端发送给服务器的数据。如果你试图访问一个没有提交的表单键,Flask会报400错误。

<input name="my_input" id="my_input" type="text" value="{{ email }}">

撰写回答