1.后端数据编码格式的不同
'''
1. 3种编码格式
urlencoded
formdata
json
2.默认的数据格式编码urlencoded
2.1 数据格式编码urlencoded 数据格式 username=json&passowrd=123
django后端针对urlencode编码格式的数据会自动解析封装到request.POST中
usrname=jason&password=1234 >>>request.POST
2.2如果编码格式改成enctype=multipart/form-data.增加的文件格式
那么 普通的键值对还是解析到 request.POST 中,文件解析到request.FILES中。
2.3 form表单无法发送jason格式的。
3.ajax 默认的编码格式也是urlencoded
3.1如何指定编码格式
ajax 中 contentType:'application/json'
data:JSON.stringify({'username':'aaa','age':23}),
现在向后端发送的数据格式"username":"aaa","age":23
后端 如何判断是ajax请求
if request.is_ajax():
django 对ajax的请求不会做任何处理
针对前段发送过来的json 格式 request.body 格式
import json
json_bytes = request.body
json_str = json_bytes.decode('utf-8')
json_dict = json.loads(json_str)
print(json.dict,type(json.dict))
4.ajax发送文件-------前段
4.1需要先利用FormData 内置对象
在ajax的前面
$("#btn").click(function(){ 添加以下代码 })
let formDataObj = new FormData();
formDataObj.append('username',$("#id1").val())
formDataObj.append('password',$("#id2").val())
添加文件对象
forDataObj.append('myfile',$("#d3")[0].files[0])
以下为ajax的配置
$.ajax({
url:'',
type:'post',
data:formDataObj,//直接将对象放在data中。
contentType:false, //不需要任何编码 django后端能够自动识别formData第一项
processDate:false, //告诉浏览器,不要对数据进行任何处理
})
4.2.后端
if request.is_ajax():
if request.method=="POST":
print(request.POST)
print(request.FILES)
'''
5.后台序列化组件
from django.core import serializers
res = serializers.serialize('json',user_uquerset)
return HttpResponse(res)
6批量插入数据
models.Book.objects.bulk_create(book_list)