使用Ajax (put delete ) django原生CBV 出現csrf token解決辦法
阿新 • • 發佈:2019-05-14
lan 一個 djang ict 默認 postman blank 數據 span 所以在進行ajax發送表單數據時,需要在ajax頭文件中設置csrf
原文地址:
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。
同時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解決辦法