码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2019-05-14 09:34:09      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:网页   请求   get   token   detail   解决   charm   views   article   

原文地址:

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

标签:网页   请求   get   token   detail   解决   charm   views   article   

原文地址:https://www.cnblogs.com/erhao9767/p/10860116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!