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

Django带Payload的GET请求出现KeyError异常求助

解决Django请求中Payload构造的KeyError问题

这问题出在你手动构造JSON字符串时,没正确处理Python str.format() 的占位符规则,让我给你拆解清楚:

问题根源

你写的payload代码是:

app_id = "Dert/dedff/12i="
payload = "{\n \"app_id\": \"{}\"\n}".format(app_id)

这里外层的{和}是JSON的语法符号,但在Python的str.format()方法里,{}会被识别为格式占位符,而非普通字符。当你调用.format(app_id)时,Python会扫描整个字符串里的所有{}:

  • 你本来只想替换"{}\"里的占位符,但JSON的外层大括号也被当成了占位符
  • Python找不到对应外层占位符的参数,就抛出了KeyError: "\n 'app_id'"(这个错误信息其实是Python尝试解析{后面的内容作为占位符名称时得到的)

解决方案

有两种靠谱的解决办法,更推荐第二种规范写法:

方式1:转义JSON的大括号

把JSON结构里的{改成{{,}改成}},这样str.format()会把它们解析成字面的大括号,只替换你指定的占位符:

app_id = "Dert/dedff/12i="
payload = "{{\n \"app_id\": \"{}\"\n}}".format(app_id)

方式2:使用json模块构造JSON(推荐)

手动拼接JSON字符串很容易踩坑,尤其是遇到特殊字符时。Python的json模块能自动处理格式和转义,省心又可靠:

import json

app_id = "Dert/dedff/12i="
# 先构造Python字典
payload_data = {"app_id": app_id}
# 转换成格式化的JSON字符串
payload = json.dumps(payload_data, indent=2)

这样生成的JSON格式绝对正确,哪怕app_id里有引号、斜杠这类特殊字符,json.dumps也会自动帮你转义。

验证效果

用第二种方式生成的payload和你预期的完全一致:

{
  "app_id": "Dert/dedff/12i="
}

之后发起请求就不会再出现KeyError啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:56:00