1. json
1. json是一种数据格式
2. 数据类型
3. 序列化
4. 反序列化
5. 前端
数据类型:字符串 数字 布尔值 数组 对象 null
序列化:JSON.stringify(js的数据类型)
反序列化:JSON.parse(json的字符串)
6. JsonResponse
from django.http import JsonResponse
JsonResponse([], safe=False)
-
发请求的途径
- a标签 GET
- form表单 GET /POST
- action:
- method:
- input标签要有name属性
- 有一个input标签的type='submit'或者button
- 地址栏中输入地址回车 GET
注意以上三种方式是同步请求
- ajax(异步)
-
ajax
- 使用js的技术发请求的一个方式,与服务器交互的技术
- 特点: 异步 页面局部刷新 传输的数据量小
- 使用:
- 使用JQuery:
1.格式
2.上传文件
form_obj = new FormData()
form_obj.append('f1', $())
$.ajax({
})
- 使用JQuery:
-
使用格式及参数
$.ajax({ url: '/ajax_test/', # 请求的地址 type: 'post', # 请求的方式 data: { # 请求的数据 name: 'alex', age: '73', hobby: JSON.stringify(['吃烧饼', '画大饼', '卖烧饼']) }, success: function (res) { # 正常响应的回调函数 $('[name="ii3"]').val(res) }, error:function (res) { # 错误响应的回调函数 console.log(res) } })
-
上传文件
$('#b1').click(function () { var form_obj = new FormData(); form_obj.append('f1',$('[name="f1"]')[0].files[0]) $.ajax({ url:'/upload/', type:'post', processData:false, # 不需要处理数据编码格式 contentType:false, # 不需要处理请求头 data:form_obj, success:function (res) { alert(res) } }) })
-
ajax可以提交POST请求的方式:
-
页面中使用{% csrf_token %},给POST提交数据中添加csrfmiddlewaretoken的键值对
$.ajax({ type:'post', data: { 'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val(), i1: $('[name="i1"]').val(), i2: $('[name="i2"]').val() }, })
-
添加X-csrftoken的请求头
$.ajax({ type:'post', headers:{ 'X-csrftoken': $('[name="csrfmiddlewaretoken"]').val(), }, })
-
写文件
从cookie中获取值,添加到请求头中。
必须确保有csrftoken的cookie
from django.views.decorators.csrf import ensure_csrf_cookie
-