Flask接口网页端返回空字典,Postman请求却能正常获取值?
问题原因与解决办法
核心问题
request.form 仅用于获取POST请求中通过表单提交(Content-Type: application/x-www-form-urlencoded)的数据。直接在网页地址栏访问路由属于GET请求,参数会附在URL末尾(比如/multiplication?a=10&b=5),这类参数需要用request.args来获取。
解决方式
方式1:兼容GET与POST请求
修改路由装饰器允许两种请求方法,根据请求类型选择对应参数获取方式:
from flask import Flask, request app = Flask(__name__) @app.route('/multiplication', methods=['GET', 'POST']) def multi(): data = request.form if request.method == 'POST' else request.args print('data is', data) return f'data is {data}' if __name__ == '__main__': app.run()
方式2:统一获取所有请求参数
用request.values可以同时获取GET的URL参数和POST的表单参数,无需区分请求方法:
from flask import Flask, request app = Flask(__name__) @app.route('/multiplication', methods=['GET', 'POST']) def multi(): data = request.values print('data is', data) return f'data is {data}' if __name__ == '__main__': app.run()
方式3:仅支持GET请求(适配网页直接访问场景)
如果只需要处理网页GET访问的场景,直接替换为request.args即可:
from flask import Flask, request app = Flask(__name__) @app.route('/multiplication') def multi(): data = request.args print('data is', data) return f'data is {data}' if __name__ == '__main__': app.run()
内容的提问来源于stack exchange,提问作者Shweta
相关产品推荐
相关产品推荐

