如何解决rest framework无法用DELETE方法进行删除操作问题?相信很多没有经验的人对此束手无策,通过这篇文章希望你能解决这个问题。
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了牡丹江免费建站欢迎大家使用!后端API使用的框架是rest framework,前端通过GET获取列表,通过POST添加数据都没有问题
但是通过DELETE方法进行删除操作的时候,有报错:
奇怪,cookie里明明已经有了csrf的token,但是DELET方法好像就是识别不到,因而接口直接返回403
查了下资料:
因为POST请求,是将从csrftoken放在post参数中,但是django中对PUT/DELETE只能通过检查Header的方式来检查csrftoken
所以要么后端在接收PUT/DELETE请求后进行预处理,要么前端在PUT/DELETE方式增加一个Header
后端的解决方法暂时没找到好用的办法,前端处理这种情况很简单,在cookie中取csrftoken添加到请求头里即可:
export async function removeExport(params) { return request('/api/collector/', { method: 'DELETE', body: { ...params, method: 'delete', }, headers:{ "X-CSRFToken": Cookies.get('csrftoken') } }); }这样后端就可以正常拿到前端带过来的csrftoken进行认证
在使用PUT方法进行更新操作的时候,又遇到一个问题,不返回403了,改成405了
报错是PUT Method Not Allow,方法不被允许?
又检查了一下处理跨域的地方:
大部分方法基本都允许了,但是看了下stackoverflow上面,说是请求的path俩面没有给修改的id
原本请求的url http://127.0.0.1:8080/api/promMonitor/
修改了下前端请求的path http://127.0.0.1:8080/api/promMonitor/1/
居然可以了,然后前端修改一下请求参数:把需要修改的id带到path里面即可
看完这篇文章,你能够独立解决rest framework无法用DELETE方法进行删除操作的问题了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款