网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

restframework无法用DELETE方法进行删除操作

如何解决rest framework无法用DELETE方法进行删除操作问题?相信很多没有经验的人对此束手无策,通过这篇文章希望你能解决这个问题。

10年积累的做网站、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有白云鄂免费网站建设让你可以放心的选择与我们合作。

后端API使用的框架是rest framework,前端通过GET获取列表,通过POST添加数据都没有问题

但是通过DELETE方法进行删除操作的时候,有报错:

rest framework无法用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,方法不被允许?

又检查了一下处理跨域的地方:

rest framework无法用DELETE方法进行删除操作

大部分方法基本都允许了,但是看了下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方法进行删除操作

看完这篇文章,你能够独立解决rest framework无法用DELETE方法进行删除操作的问题了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读。


文章标题:restframework无法用DELETE方法进行删除操作
转载注明:http://bjjierui.cn/article/joeess.html

其他资讯