Python Flask开发中访问字典name键触发KeyError无法解决
问题原因及修复方案
核心问题1:字典键名拼写错误
你定义users数组时的用户字典键名多写了冒号,实际键是"name:"而非你预期的"name",所以访问user['name']必然触发KeyError。
错误代码片段:
users = [ {"name:": "bitley", # 键名多了冒号 "age": 5000, "items": [ {"name:": "toyota"}, # 此处也存在同样的冒号冗余问题 {"name": "camry"} ] } ]
核心问题2:条件判断逻辑错误
你写的if user['name'] == 'name':是把用户的name值和固定字符串'name'做对比,不是和路由传入的name参数对比,就算键名正确也无法匹配到目标用户。
其他隐性错误
- 匹配到用户后你返回了全部
users数组,而非符合条件的单个用户 - 404返回的字典存在语法错误:键名多了冒号、字符串拼接缺少逗号,原代码
{"message: " "user not found.."}实际会被解析为{"message: user not found.."},不符合字典规范
修复后完整代码
import re from flask import Flask, json, request from werkzeug.user_agent import UserAgent app = Flask(__name__) users = [ {"name": "bitley", "age": 5000, "items": [ {"name": "toyota"}, {"name": "camry"} ] } ] # GET a user by name @app.route('/users/<string:name>') def get_user_by_name(name): # 检查用户是否存在 for user in users: if user['name'] == name: return json.jsonify(user) return json.jsonify({"message": "user not found.."})
内容的提问来源于stack exchange,提问作者KhzEn
相关产品推荐
相关产品推荐

