Ajax相关

传收数据示例

$.ajax({
    url: '/test/',
    type: 'get',
    data: {
        name: 'alex',
        age: 84,
        hobby: JSON.stringify(['抽烟', '喝酒', '画大饼']) // 使用JSON.stringify对数据进行序列化
    },
    success: function (data) {
        console.log(data)
    }
})
// 在视图函数里通过json反序列化,获得数据
// views.py
// import json
// json.loads(reuqest.GET.get('hobby'))

使用ajax上传文件

// html
<input type='file' id='f1'>
<button id='b1'>上传</button>
// js
<script src='jQuery.js'></script>
<script>
    $('#b1').click(function(){
    var formData = new FormData();
    formData.append('file',$("#f1")[0].files[0])
    $.ajax({
        url:'/index/',
        type:'post',
        data:formData,
        processData:false,
        contentType:false,
        success:function(data){
            alert('上传成功')
		}
    })
})
</script>

ajax通过django的csrf校验

  • 前提条件 :确保有csrftoken的cookie

    • 方法一 :HTML文件导入

    • 方法二 :给视图加上ensure_csrf_cookie装饰器

      from django.views.decorators.csrf import csrf_exempt,csrf_protect,
      ensure_csrf_cookie
      csrf_exempt  # 加在视图上,表示该视图不需要进行csrf校验
      csrf_protect  # 加在视图上,表示该视图需要进行csrf校验
      ensure_csrf_cookie  # 加在视图上,确保返回时,设置csrftoken的cookie
      
  • 方法

    • 给data中添加csrfmiddlewaretoken的键值对
    • 给headers中添加x-csrftoken的请求头
posted @ 2020-08-26 16:22  左晓龙  阅读(38)  评论(0编辑  收藏  举报