Django查询优化及ajax编码格式原理解析
orm查询优化
1)only与refer
"htmlcode">
$.ajax({ url:'', # 后端的地址,特性跟action一直,三种情况 type:'post', # 请求方式,小写 data:{'username':'zhang',password:'123'}, # 提交的数据 success:function(data){ # data异步提交的结果 # 回调机制返回的结果 # window.location.href = url } }) #基于ajax做数据交互,后端无论返回什么结果都会被回调函数捕获,不会再影响整个页面
前后端数据传输编码格式
urlencoded
数据格式username=zhang&password=123
django针对符合urlencoded编码格式的数据,会自动解析并放到request.POST中;
formdata
form表单发送文件必须要指定的编码格式
该编码格式既可以发文件也可以发普通的键值对
django后端自动识别,将内部符合urlencoded编码格式的数据,自动解析并将文件类型的数据解析封装到request.FILES中
application/json
ajax可以发送json格式的数据,form表单不支持
#注意:数据类型和编码格式要保证一致性
ajax如何发送json格式的数据
需要在前端新增一个参数
contentType:'application/json'
需要将数据序列化成json格式的字符串
JSON.stringfy({'username':'zhang','password':'123'})
注意:django后端针对json格式的数据,不会做任何处理,原封不动的在放request.body内
ajax发送文件(不单单可以发送文件,也可以发送普通键值对)
建议借助原生js的内置对象帮你做数据携带
1).先生成一个内置对象
var MyFormData = new FormData();
2).然后朝该对象内添加数据(普通键值对和文件均可)
普通键值对
MyFormData.append('name','value')
MyFormData.append('name1','value1')
MyFormData.append('name2','value2')
文件数据
如何获取input文件标签内文件数据
var MyFileobj = $("input[type='file']")[0].files[0];
3.需要额外指定两个参数
contentType:false, # 不指定任何编码,对象自带编码 django能够识别;
processData:false, # 浏览器不需要对数据进行任何处理
django能够识别对象中的普通的键值对和文件对象,然后分别放到不同的方法POST和FILES中;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇:python实现梯度下降和逻辑回归