Python Flask服务按输入马力筛选匹配车辆记录无返回问题求助
代码问题清单
- 变量重名冲突:for循环内覆盖了从请求参数获取的
horsepower变量,原始查询值被替换为当前遍历记录的马力值 - 参数类型不匹配:请求参数拿到的
horsepower为字符串类型,未转换为整数,无法和数值类型的马力字段正确匹配 - 判断逻辑错误:条件判断写为
horsepower == record,是将马力值和整条车辆记录字典对比,永远返回False - 匹配结果未写入返回值:即使匹配到符合条件的车辆,也没有将车辆名称追加到返回的
message变量中,接口仅返回开头的马力标题 - 缩进不规范:for循环内的代码缩进不符合Python语法要求,会导致逻辑执行异常
修复后完整代码
from flask import Flask from flask import request import os, json app = Flask(__name__, static_folder='flask') @app.route('/HORSEPOWER') def horsepower(): # 读取查询参数并做合法性校验 query_hp = request.args.get('horsepower') if not query_hp: return "<h3>错误:缺少horsepower参数</h3>" try: query_hp = int(query_hp) except ValueError: return "<h3>错误:horsepower参数必须为整数</h3>" # 拼接返回内容头部 message = f"<h3>HORSEPOWER {query_hp}</h3><ul>" # 读取车辆数据文件 path = os.getcwd() + "/data/vehicles.json" with open(path, encoding='utf-8') as f: data = json.load(f) # 遍历匹配符合马力要求的车辆 for record in data: current_hp = int(record["Horsepower"]) if current_hp == query_hp: car_name = record["Car"] message += f"<li>{car_name}</li>" # 拼接返回内容尾部 message += "</ul>" return message if __name__ == '__main__': app.run(debug=True)
内容的提问来源于stack exchange,提问作者F0XJR
相关产品推荐
相关产品推荐

