使用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解决办法