一.Ajax
ajax(Asynchronous Javascript And XML)翻译成中午就是"异步JavaScritp和XML"。即是使用JavaScript语言与服务器进行异步交互,传输的数据为XML(现在更多使用json数据)。ajax就是一种前后端数据交互的方式特点: 1.异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求 2.局部刷新
基本用法:
$.ajax({ url:'/index/', 指定路径 type:'post', 指定请求方式 data:{'name':'Yven','age':18}, 往后台提交的数据 success:function (data) { 成功时回调该函数 console.log(data) }})
二.上传文件
请求头ContentType
1.application/x-www-form-urlencoded
这是最常见的POST提交数据的方式,浏览器的原生<form>表单,如果不设置enctype属性,那么最终就会以application/x-www-form-urlencoded方式提交数据,请求类似下面这样:
POST http://www.example.com HTTP/1.1Content-Type: application/x-www-form-urlencoded;charset-utf-8user=yven&&age=18
2.multipart/form-data
这又是一个常见的POST数据提交的方式,我们使用表单上传文件时,必须让<form>表单的enctype等于multipart/form-data。如下:
POST http://www.example.com HTTP/1.1Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-Disposition: form-data; name="user"yuan------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-Disposition: form-data; name="file"; filename="chrome.png"Content-Type: image/pngPNG ... content of chrome.png ...------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
3.application/json
application/json这个Content-Type作为响应头大家肯定不陌生。这也是越来越流行的一种请求头,用来告诉服务端消息主体是序列化后的JSON字符串,由于JSON规范的流行,除了低版本IE之外的各大浏览器都原生支持JSON.stringify,服务端语言也都有处理JSON的函数,使用JSON不会有书名麻烦。JSON格式支持比键值对复杂的多的结构化数据,这一点也很有用,
基于Ajax上传文件
三.Ajax提交json格式数据
模板层
试图层
if request.method == 'GET': return render(request,'json_login.html')data = request.bodyimport jsonres = json.loads(data.decode('utf-8'))name = res['name']pwd = res['pwd']dic = {'user':None,'msg':None}try: user = models.User.objects.get(name=name) if user.password == pwd: dic['user'] = 1 dic['msg'] = '登录成功' else: dic['msg'] = '密码错误' return JsonResponse(dic)except: dic['msg'] = '用户名不存在' return JsonResponse(dic)
四.Django内置的serializers
from django.core import serializers# serializers把对象序列化成json字符串def test(request): book = Book.objects.all() res = sserializers.serialize('json',book) return HttpResponse(res)