You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Flask下使用PUT请求更新字典数据的问题咨询

问题原因与解决方案

错误根因

append()、insert()是Python列表的专属内置方法,你需要操作的reqUser是字典类型,字典不存在这两个方法,因此调用会直接报错。

字典更新的正确方式

更新字典的键值对有两种常用写法:

  • 单字段直接赋值:确定只需要更新email字段时使用,写法最简单
reqUser["email"] = userEmail["email"]
  • 多字段批量更新:如果请求体可能包含多个需要更新的字段(比如同时修改邮箱、用户名),可以直接调用字典的update()方法,会自动覆盖原有字段、新增不存在的字段:
reqUser.update(userEmail)

完整修正后的代码

from flask import Flask, request, jsonify

app = Flask(__name__)

# 模拟用户数据
users = [{"userid":1,"username":"John","email":"john@gmailer.com","role":"member","password":"abc123"}]

@app.route('/users/<int:userid>', methods=["PUT"])
def update_user_email(userid):
    # 先获取请求体
    update_data = request.json
    # 增加参数校验,避免请求体不带email时报错
    if not update_data or "email" not in update_data:
        return jsonify({"Message": "请求参数错误,必须包含email字段"}), 400

    reqUser = None
    for user in users:
        if user['userid'] == userid:
            reqUser = user
            break

    if reqUser:
        # 直接更新email字段
        reqUser["email"] = update_data["email"]
        # 返回信息中带上实际的用户ID
        return jsonify({"Message": f"User with id {userid} has been successfully updated!"}), 200
    else:
        return jsonify({"Message": f"User with id {userid} does not exist!"}), 404

if __name__ == '__main__':
    app.run(debug=True)

验证方式

启动服务后执行以下curl命令即可验证:

curl -X PUT -H "Content-Type: application/json" -d '{"email":"abc@bmail.com"}' http://127.0.0.1:5000/users/1

内容的提问来源于stack exchange,提问作者daryllzj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:45:00