从HTML表单提交值并在Flask视图中访问它们
我有一个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 }}">