使用django和jquery异步上传文件后台获取不到数据?
冻GoldenJoe2020-11-30 22:04:24
我这是那写错了后台获取不到数据呢?
- <script>
- $(function () {
- $('#number').click(function () {
- var form_info = new FormData();
- var fileinfo = $('[name=upload]'); //获取文件对象
- var file_obj=fileinfo[0].files[0]; //1种方式获取文件内容
- //var file_obj = $('[name=upload]')[0].files[0]; //2种方式获取文件内容
- //这里FormData是一个jquery对象,用来绑定values对象,也可以用来上传二进制文件,有了他就可以不用form表单来上传文件了
- var uesrName=$('[name=userName]').val() /*获取用户名*/
- var userPsw=$('[name=userPsw]').val()/*获取密码*/
- var box=$('[name=box]').val() /*获取记住用户名*/
- var check=$('[name=check]').val() /*获取验证码*/
- var csr=$('[name=csrfmiddlewaretoken]').val()
- // var datas = $('#form1').serialize()/*序列化表单对象(获取表单内容,以这种方式展现userName=用户输入的内容&userPsw=用户输入的内容)*/
- form_info.append('userPsw',userPsw);
- form_info.append('uesrName',uesrName);
- form_info.append('box',box);
- form_info.append('check',check);
- form_info.append('csrf',csr);
- // form_info.append('file_obj',file_obj);
- //image_info.append('csrfmiddlewaretoken',csrf_data); //获取防止身份伪造跨域名攻击内容
- $.ajax({
- processData: false, /*不处理数据*/
- contentType: false, /*不设置内容类型*/
- // headers: {
- // "X-CSRFToken": $.cookie('csrftoken') // Django 403处理
- // },
- url: '/login_check', /*请求地址*/
- type: 'post', /*请求方式*/
- data: form_info, /*发送的数据内容*/
- datatype: 'json',/* 请求数据返回的类型*/
- success: function (data) { /*返回请求信息*/
- // if (data.info == 1) {
- // window.location.replace('/direct')//1.页面重定向
- // // window.location.href="url" //2.页面重定向
- // } else if (data.info == 0) {
- // alert('密码错误')
- // } else if (data.info == 2) { // alert('用户名不能为空')
- // } else if (data.info == 3) { // alert('验证码错误')
- // } }
- })
- })
- })
- </script>
复制代码- <body>
- <form action="" method="post" datatype="multipart/form-data">
- {% csrf_token%} <!--防止身份伪造跨域名攻击。 Django 默认开启防护-->
- 用户名:<input type="text" name="userName" value='{{userName}}'><br>
- 密码:<input type="text" name="userPsw"><br>
- <input type="checkbox" name="box">记住用户名<br>
- 验证码:<input type="text" name="check"><img src='/verify_code'/><br>
- <span style="width: 10px; height: 10px; display: block"></span>
- <input type="file" name="upload" id="upload" /><br>
- <span style="width: 10px; height: 10px; display: block"></span>
- <input id="number" type="button" value="发送ajax请求">
- </form>
复制代码- def login_check(request):
- userName = request.POST.get('uesrName')
- print(userName)
- userPsw = request.POST.get('userPsw')
- box = request.POST.get('box') # 获取复选框
- check = request.POST.get('check') # 获取验证码
- #这里的image_info拿到了文件的对象,这个对象包含了文件的名字,二进制内容
- image_info=request.FILES.get('file_obj')
复制代码
|