get请求需要拼接到url里面
post请求,需要放到send方法里面,后端取值的时候,Ajax用JavaScript传输跟用postman传输,取值方式有些区别,这里做一下详细记录
传参格式{'id':1} request.body取值,得到的结果如下: b'{ "name":"olive", "phone":18503234424, "home":"xe6xb1x9fxe8x8bx8fxe7x9cx81" }' <class 'bytes'> ajax post body params b'{"name":"kevin","phone":"13689897878","home":"xe5x90x89xe6x9ex97xe7x9cx81"}' <class 'bytes'> request.data取值,postman 和ajax 反馈结果如下: ajax <QueryDict: {'{"name":"simon","phone":"15646465585","home":"安徽省"}': ['']}> <class 'django.http.request.QueryDict'> postman {'data': {'name': 'oven', 'phone': 18503004424, 'home': '江苏省'}} <class 'dict'>
后端是用APIView,post取值方式,request.data/request.body
当用request.body取值的时候,不论是postman还是Ajax都是byte格式,拿到byte之后,json.loads就能得到对象,可以直接拿到数据。
用request.data取值的时候,Ajax传过来的就是querydict,postman传过来的就是dict对象。这个还挺奇怪的。可能是request里面封装了什么东西导致的这样的区别
传参格式 data={‘id’:1}
当传参格式发生变化时,request.data取值,ajax传递的querydict格式发生变化,如下
<QueryDict: {'data': ['{"name":"simon","phone":"15646465585","home":"安徽省"}']}> <class 'django.http.request.QueryDict'>
request.data.get("data") 拿到的是str需要序列化转成dict对象