前后端数据传输的编码格式(contentType)
# 前后端数据传输的时候请求方式有2种:get post
我们不研究get请求的
url?a=1&b=2
# 我们只研究post请求的编码格式
三种编码格式:
urlencoded
form-data
json
# 可以通过哪些方式发送post请求
form表单
Ajax
postman
请求头中的Content-Type:参数
# 研究form表单发送post请求的时候数据的编码格式
默认提交编码格式是:application/x-www-form-urlencoded
它的数据格式是:username=dasdas&password=dasdas&gender=dasdas
# 针对application/x-www-form-urlencoded格式的数据,在Django后端是如何接收数据的
所以:Django后端针对符合urlencoded格式的数据,django把数据都封装到了request.POST中了
另外一种编码格式:multipart/form-data
# 编码格式从urlencoded改成form-data有什么效果?
form表单就可以提交文件数据了
它的数据格式又是什么样子的呢?
Content-Type:
multipart/form-data; boundary=----WebKitFormBoundary7iwnnLo3TDiHIAQz--->文件数据
# 针对multipart/form-data格式的数据,Django后端是如何接收数据的?
针对普通数据django把数据封装到了request.POST中
针对文件数据django把数据封装到了reuqest.FILES中
Ajax提交post请求的数据时候,编码格式又是怎样的?
# 默认的提交格式是:application/x-www-form-urlencoded; a=1&b=2
Django后端针对符合urlencoded格式的数据,django把数据都封装到了request.POST
Ajax提交json格式的数据
提交json格式的数据必须满足两个条件:
1. 你的编码格式必须是json格式的:contentType参数
2. 你的数据必须是json {"a":1}
# 针对json格式的数据,Django后端又是如何处理的?
针对ajax提交的json格式的数据,django后端不在把数据封装到request.POST中了
# 对于json格式的数据,django后端不在做任何的封装,数据是纯原生的,发送过来的数据是二进制形式的
# 我们自己来处理这些二进制数据
# js中序列化
JSON.stringify({'a': 1, b: 2}) ----------》{'a': 1, b: 2} 对象
contentType:'application/json',
# django后端接收json格式的数据
json_str = request.body.decode('utf-8')
print(json_str) # {"a":1,"b":2}
json_data = json.loads(json_str)
print(json_data) # {'a': 1, 'b': 2}
print(json_data.get('a'))
Ajax提交文件数据(重要)
var username = $("#username").val();
var password = $("#password").val();
// 文件数据
{#var myfile = $("#myfile")[0].files[0];#}
var myfile= $("#myfile")[0].files[0];
// 发送文件数据到后端需要借助于FormData对象
var myFormDataObj = new FormData();
myFormDataObj.append('username', username);
myFormDataObj.append('password', password);
myFormDataObj.append('myfile', myfile);
$.ajax({
url: '',
type: 'post',
data: myFormDataObj, // {}
contentType:false, // 告诉浏览器不要做任何的编码格式处理,django自己来做处理
processData:false, // 告诉浏览器不要对我处理的数据做任何的处理
success: function (res) {
{#console.log(res)#}
}
});
AJax结合layer弹窗实现删除的二次确认
# 我们使用第三方的UI弹窗:layer、sweetalert、
https://layuiweb.com/doc/element/form.html ----------> layui
https://layuiweb.com/layer/index.htm---------------->layer
批量插入数据
# 在django中批量插入数据
# for i in range(10000):
# models.UserInfo.objects.create(username='jerry_%s' % i)
"""为什么插入的数据很慢?"""
# insert into userinfo values('jerry');
# insert into userinfo values('jerry'), ('jerry_2'), (),('jerry'), ('jerry_2'), ();
user_obj_list = []
for i in range(100000):
user_obj = models.UserInfo(username='jerry_%s' % i)
user_obj_list.append(user_obj)
print('jerry_%s' % i)
'''开始操作数据库'''
models.UserInfo.objects.bulk_create(user_obj_list)
标签:form,data,json,django,Ajax,提交,格式,数据
From: https://www.cnblogs.com/huangchunfang/p/17614310.html