Django之ajax
前后端传输数据的编码格式(理论篇)
"""
只研究post请求的编码格式,get不研究
url?username=xxx&password=yyy,这就是get提交的
"""
form表单能够2种:
1. urlencoded
2. form-data
# json格式的数据form表单无法提交
能够提交json的格式有:
1. ajax
2. 第三方工具:postman
form表单提交数据的编码格式:
1. 默认是urlencoded(显示为application/x-www-form-urlencoded)
# 对于urlencoded格式的数据,django后端都会给封装到request.POST中取
2. 也可手动修改为form-data(显示为multipart/form-data)
# 改完后可以提交文件数据,普通数据还是和urlencoded一样,但是文件数据都封装到request.FILES中
ajax默认的提交格式是:Content-Type: application/x-www-form-urlencoded
django后端也是把数据都封装到了request.POST中
ajax提交json格式的数据
ajax提交json格式的数据:
1. content-type必须是:json(默认是urlencoded)
2. 传输的数据必须是json格式的
# ajax提交的json格式数据,django后端没有把数据封装到request.POST中
在Django后端使用request.body,可以获取ajax提交的json格式的数据
# 针对ajax提交的json格式数据,django后端没有做任何的封装,纯原生数据,在request.body中,需要我们自己手动处理数据格式
# 使用如下
$.ajax({
url: '',
type: 'post',
data: JSON.stringify({'a': 1, 'b': 2, c: 3}), # 2
// 更改contenttype
contentType:'application/json', # 1
success: function () {
}
})
ajax提交文件数据
var myfile = $("#myfile")[0].files[0]; # 获取文件数据
# ajax提交文件数据,需要借助于form-data
var myFormDataObj = new 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, // 告诉浏览器不要给我修改任何的编码格式
processData:false,// 告诉浏览器不要对我的数据进行任何的修改或者干扰
success: function () {
}
})
"""
总结:
1. var myFormDataObj = new FormData();
2. 获取数据,然后添加到myFormDataObj
myFormDataObj.append('password', password);
// 提交文件数据、
myFormDataObj.append('myfile', myfile);
3. 修改参数:
contentType: false, // 告诉浏览器不要给我修改任何的编码格式
processData:false,// 告诉浏览器不要对我的数据进行任何的修改或者干扰
4. 在django后端,普通数据还是在request.POST中,文件数据在
request.FILES里面
"""
ajax结合layer弹窗实现删除的二次确认
# 1. 学会如何使用第三方工具-------》去看人家写的文档,根据文档把工具学会使用就行
https://layuiweb.com/layer/index.htm
django自带的序列化组件(了解)
# 让你从数据库总查询几条数据,然后序序列化给到前端,列表套字段的形式[{},{},{}]
from django.core import serializers
def ab_ser(request):
user_list = models.Book.objects.all()
# print(user_list) # <QuerySet [<Book: Book object (2)>, <Book: Book object (3)>, <Book: Book object (4)>]>
# book_list = []
# for obj in user_list:
# tmp = {
# 'pk':obj.pk,
# 'username':obj.username,
# }
# book_list.append(tmp)
book_list = serializers.serialize('json', user_list) # 了解
return JsonResponse(book_list,safe=False)
批量插入数据
# 让你往book表插入10000条数据
select * from app01 limit 1,500 # 第一页
select * from app01 limit 501,1000 # 第二页
select * from app01 limit 1001,1500 # 第三页
# select * from app01
select * from app01 limit 99501,100000 # 最后一页
from app01 import models
# for i in range(10000):
# models.Book.objects.create(username='%s' % i)
book_list = []
for i in range(100000):
book_obj = models.Book(username='%s' % i)
book_list.append(book_obj)
# book_list 一次插入多条数据 insert into table (username) values(1,'kevin'),(1,'kevin'),(1,'kevin'),(1,'kevin'),(1,'kevin'),(1,'kevin')
models.Book.objects.bulk_create(book_list)
# 不管数据有多大,只要不去查库,效率都可以忽略,
'''以后再实际项目中,能够一次操作数据库完成的动作,就要尽量使用一次性的,'''
标签:list,json,Django,ajax,book,格式,数据
From: https://www.cnblogs.com/juzixiong/p/17372509.html