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
相关产品推荐
相关产品推荐

