首页 新闻 搜索 专区 学院

使用django和jquery异步上传图片后台无法获取前端传过去的数据

1
悬赏园豆:5 [待解决问题]

<script src="{% static 'js/jquery-1.12.4.min.js'%}"></script><!--静态路径-->

<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);
// 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')
代码改变你我的主页 代码改变你我 | 初学一级 | 园豆:184
提问于:2020-11-27 15:12
< >
分享
所有回答(1)
0

能具体说一下吗?后台怎么获取不到的,有可能前端传的数据就不对,也有可能后端获取数据的方法有问题

Micheal_L | 园豆:180 (初学一级) | 2021-02-19 15:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册