1. 程式人生 > >使用Ajax (put delete ) django原生CBV 出現csrf token解決辦法

使用Ajax (put delete ) django原生CBV 出現csrf token解決辦法

lan 一個 djang ict 默認 postman blank 數據 span

原文地址:

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解決辦法