前后端数据传输的编码格式(contentType)
GET,POST
POST的三种编码格式:urlencoded、form-data、json
form表单、Ajax、postman
请求头中的content-Type:参数
默认提交编码格式是:application/x-www-form-urlencoded
它的数据格式是:username=dasdas&password=dasdas&gender=dasdas
Django后端针对符合urlencoded格式的数据,Django把数据都封装到了request.POST中了
**************************************************************************
第二种编码格式:
multipart/form-data
form表单就可以提交数据了
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary7iwnnLo3TDiHIAQz--->文件数据
针对普通文件Django把数据封装到了request.POSt中
针对文件数据Django把数据封装到了request.FILES中
**************************************************************************
Ajax提交POST请求数据的时候,编码格式又是怎么样的?
Django后端针对符合urlencoded格式的数据,django把数据都封装到了request.POST
Ajax提交Json格式的数据
提交json格式的数据必须满足的两个条件:
1、编码格式必须是json格式的:contentType参数
2、数据必须是json{"a":1}
针对ajax提交的json格式的数据,django后端不在把数据封装到request.POST中了
对于json格式的数据,Django后端不再做任何的封装,数据是纯原生的,发送过来的数据是二进制形式的,而这些数据则需要我们自己处理。
<script>
$('#d1').click(function () {
$.ajax({
url:'',
type:'post',
data:JSON.stringify({'username':'jason','age':25}),
contentType:'application/json', // 指定编码格式
success:function () {
}
})
})
</script>
json_str = request.body.decode('utf-8')
print(json_str)
json_data = json.loads(json_str)
print(json_data)
print(json_data.get('a'))
Ajax提交文件数据(重要)
<script>
// 点击按钮朝后端发送普通键值对和文件数据
$('#d4').on('click',function () {
// 1 需要先利用FormData内置对象
let formDateObj = new FormData();
// 2 添加普通的键值对
formDateObj.append('username',$('#d1').val());
formDateObj.append('password',$('#d2').val());
// 3 添加文件对象
formDateObj.append('myfile',$('#d3')[0].files[0])
// 4 将对象基于ajax发送给后端
$.ajax({
url:'',
type:'post',
data:formDateObj, // 直接将对象放在data后面即可
// ajax发送文件必须要指定的两个参数
contentType:false, // 不需使用任何编码 django后端能够自动识别formdata对象
processData:false, // 告诉你的浏览器不要对你的数据进行任何处理
success:function (args) {
}
})
})
</script>
def ab_file(request):
if request.is_ajax():
if request.method == 'POST':
print(request.POST)
print(request.FILES)
return render(request,'ab_file.html')
AJax结合layer弹窗实现删除的二次确认
https://layuiweb.com/doc/element/form.html ----------> layui
https://layuiweb.com/layer/index.htm---------------->layer
Ajax提交数据返回页面
后端:
def add_publish(request):
if request.method == "POST":
publish_name = request.POST.get("name")
publish_addr = request.POST.get("addr")
publish_phone = request.POST.get("phone")
publish_obj = models.Publish.objects.filter(name=publish_name).first()
if not publish_obj:
try:
models.Publish.objects.create(name=publish_name, addr=publish_addr, phone=publish_phone)
return HttpResponse("set_publish")
except Exception:
return HttpResponse("add_publish")
else:
return render(request, 'add_publish.html')
return render(request, 'add_publish.html')
前端:(对Ajax做处理)
<script>
$("#btn").click(function () {
let name = $("#a1").val()
let addr = $("#a2").val()
let phone = $("#a3").val()
let xhttp = new XMLHttpRequest();
$.ajax({
url: "",
method: "post",
data: {name: name, addr: addr, phone: phone},
success: function (args) {
window.location.href = args
path('add_publish/set_publish', views.set_publish),
}
})
})
</script>
批量插入数据
"""为什么插入的数据很慢?"""
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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧