使用Ajax (put delete ) django原生CBV 出现csrf token解决办法

Posted erhao9767

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Ajax (put delete ) django原生CBV 出现csrf token解决办法相关的知识,希望对你有一定的参考价值。

原文地址:

https://blog.csdn.net/weixin_35993084/article/details/80778921 

修改ajax中type方式并设置header,同时对put重新构建数据字典

在对views中的方法进行类对象封装时,发现django并不支持像post和get一样将数据封装。
由于网页端无法设置method方法,在用postman和ajax开启pycharm对接口进行debug测试时发现:提交数据后并没有进入代码逻辑。
查阅资料得知,django支持put和delete方法。

为了防止跨站攻击,Django默认会对POST/PUT/DELETE这几种操作进行csrf token检查。POST可以将其放到post的参数中,但Django对PUT/DELETE只能通过检查Header的方式检查csrf token。
所以在进行ajax发送表单数据时,需要在ajax头文件中设置csrf

同时django对于PUT/DELETE请求并没有像POST/GET那样有一个字典结构。我们需要手动处理request.body获取参数:

from django.http import QueryDict
    put = QueryDict(request.body)
    key = put.get(key)
    field = put.get(field)
    field_value = put.get(field-value)

 

以上是关于使用Ajax (put delete ) django原生CBV 出现csrf token解决办法的主要内容,如果未能解决你的问题,请参考以下文章

AJAX POST、PUT 和 DELETE 工作正常,但 GET 被 CORS 阻止

让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求

使用Ajax (put delete ) django原生CBV 出现csrf token解决办法

Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)

如何在 jQuery 中发送 PUT/DELETE 请求?

如何发送一个PUT / DELETE请求jQuery的