Postman调用DRF PATCH接口正常,Python请求返回405错误怎么解决?
解决DRF服务器返回405 Method Not Allowed的PATCH请求问题
嘿,我一眼就看到你代码里的核心问题了——你请求的URL不对!
你看,你已经辛辛苦苦拼接好了带具体资源ID的详情URL:
url = source.url + str(self.ss_id) + '/'
但实际发送PATCH请求的时候,你用的却是source.url(也就是不带ID的列表接口地址,比如http://127.0.0.1:8000/api/title/),而DRF的列表视图默认是不支持PATCH方法的,只有单个资源的详情视图(比如http://127.0.0.1:8000/api/title/8174/)才允许用PATCH修改数据。这就是你收到405错误的根本原因。
第一步:修正请求URL
把你的请求代码改成用拼接好的url变量:
response = requests.patch(url, headers=headers, data={'key':'value'})
额外补充:关于请求头的小提示
虽然这次的问题不是请求头导致的,但可以给你提个醒:如果你的DRF序列化器期望接收JSON格式的数据,Postman可能默认帮你设置了Content-Type: application/json请求头,但用requests的data参数发送的是表单格式(application/x-www-form-urlencoded)。如果后续遇到序列化错误,可以把data换成json参数,requests会自动帮你设置正确的请求头:
response = requests.patch(url, headers=headers, json={'key':'value'})
先修正URL的问题,应该就能解决405的报错了!
内容的提问来源于stack exchange,提问作者Sharpless512
相关产品推荐
相关产品推荐

