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

DRF服务器PUT请求返回415 Unsupported Media Type问题求助

问题分析与解决方案

核心原因:DRF服务器未配置JSON解析器

你的DRF服务器parses配置中缺少application/json类型,这是导致415(不支持的媒体类型)响应的根本原因——服务器无法识别并解析JSON格式的请求体,自然会拒绝这类请求。

解决步骤

1. 更新DRF解析器配置

在服务器配置中,将application/json添加到parses列表:

"parses": [
    "multipart/form-data",
    "application/x-www-form-urlencoded",
    "application/json"
],

添加后,服务器就能正确处理JSON格式的请求体了。

2. 修正客户端请求代码

你的请求代码存在两个问题:

  • 重复JSON序列化:先把Boxes转成JSON字符串,外层又套了一次json.dumps,导致最终发送的是嵌套的JSON字符串,而非标准JSON结构
  • 误用data参数:手动序列化后用data传递,不如直接用requests的json参数更简洁可靠

修正后的代码:

Boxes = [{'X': 2423, 'Y': 532, 'W': 7456, 'H': 2345}]

r = requests.put(
    "http://127.0.0.1:8000/snippets/1/",
    json={"Boxes": Boxes, "Amount": '3'},
    headers={'Authorization': 'Token 7095dcc10e57301518f192a4e3a0fb275157cb2f'}
)
print(r.status_code)

说明:

  • json参数会自动将Python字典序列化为JSON字符串,并自动设置Content-Type: application/json请求头,无需手动处理
  • 移除了多余的json.dumps(Boxes),让Boxes以数组形式直接传入,保证服务器收到正确的数据结构

补充说明

你提到Postman能成功发送POST请求,是因为Postman默认发送的是multipart/form-data或application/x-www-form-urlencoded格式(这两类已在服务器解析器配置中),而非JSON格式。如果需要Postman也能发送JSON请求成功,同样需要完成上述第一步的服务器配置更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:03:17