Flask处理POST请求无响应问题排查求助
表单POST数据到Flask后端无响应问题排查
我已大量查阅资料,认为代码逻辑没问题但无法正常运行:通过以下HTML表单以POST方法向本地主机提交温度和湿度数据,但后端insert.py接收不到任何内容,也没有输出。
前端HTML代码
<body> <div class="middle"> <form action="insert.py" method="post"> <input type="number" class="num" name="temp" placeholder="temperature" /> <input type="number" class="num" name="hum" placeholder="humidity"/> <input type="submit" class="btn" name="insert" value="send"> </form> </div> </body>
后端insert.py代码
#!C:\Users\Edris\AppData\Local\Programs\Python\Python310\python.exe print("Content-Type: text/html\n\n") from flask import Flask, request app = Flask(__name__) @app.route('/POST', methods=['POST']) def form(): if request.method=="POST": temp = request.form.get('temp') print("insert OK") print(temp)
问题分析
- 路由与表单action不匹配:表单的
action指向insert.py,但Flask定义的路由是/POST,两者完全不对应,导致请求无法被后端正确接收。 - Flask应用未启动:代码中缺少Flask服务启动的关键代码,运行脚本后不会启动Web服务,自然无法处理请求。
- CGI头与Flask冲突:开头的
print("Content-Type: text/html\n\n")是CGI脚本的写法,Flask框架会自动处理响应头,手动输出会导致响应格式错误。 - 输出方式错误:后端用
print语句无法将内容返回给前端,Flask需要通过return语句返回响应内容。
修正方案
修正后的insert.py
#!C:\Users\Edris\AppData\Local\Programs\Python\Python310\python.exe from flask import Flask, request app = Flask(__name__) # 修改路由为/insert,和表单action对应 @app.route('/insert', methods=['POST']) def handle_form(): if request.method == "POST": temp = request.form.get('temp') hum = request.form.get('hum') # 用return返回内容到前端 return f"insert OK<br>温度: {temp}<br>湿度: {hum}" # 添加启动代码,运行脚本后启动Flask服务 if __name__ == '__main__': app.run(debug=True)
修正后的HTML表单
<body> <div class="middle"> <!-- action指向Flask的路由/insert --> <form action="http://localhost:5000/insert" method="post"> <input type="number" class="num" name="temp" placeholder="temperature" /> <input type="number" class="num" name="hum" placeholder="humidity"/> <input type="submit" class="btn" name="insert" value="send"> </form> </div> </body>
运行步骤
- 运行修正后的
insert.py,控制台会显示Flask服务启动在http://localhost:5000。 - 在浏览器中打开修正后的HTML页面,输入温度和湿度后点击send,即可看到后端返回的结果。
内容的提问来源于stack exchange,提问作者Edris Noei
相关产品推荐
相关产品推荐

