ajax不能直接发送 json格式 数据 

模板展示

$('#id').click(function(){
$.ajax({
url:'',
type:'post',
contentType:'application/json',     
data:JSON.stringify({'name':$('#username').val(),'password':$('#password').val()}),
success:function(args){alert(args)}
})       
})

主要重点在:要添加 contentType:application/json  对于data数据要 提前转JSON.stringify(xxxx)

同时后端提取时数据时 要通过request.body 而并非时requsest.POST    

补充:

在后端收到json格式数据要先反序列化 也就是解锁 一般来讲 先解成decode('utf-8'),但是json.loads()支持直接解锁 不需要先转成字符串类型

 

发送文件格式模板注意:

#要利用内置对象FormData
let formDataobj=FormData()
#添加普通键值对
formDataobj.append('username',$('#id').val())
#添加文件数据
formDataobj.append('myfile',$('#id')[0].files[0])

$ajax({
 url:'',
 type:'post',
 data:formDataobj,
 contentType:false,
 processData:false,
 success:function(args){
 alert(args)}
})

  主要注意点是:

要利用内置对象FormData生成obj

obj.append('name',文件对象) 逗号相连 取文件的也应该要记得 $('#id')[0].files[0]

额外的参数设置

processData:false
contentType:false

通过request.Files.get()取文件数据

顺带想了一下csrf的三种方式的校验

第一种在form表单的任意位置添加

{%csrf_token%}

ajax传数据时 加上一个额外的普通键值对

'csrfmiddlewaretoken':'{{csrf_token}}'

第三种引入js文件

利用script标签 从网路上搜索即可