Javascript 在Django中使用jquery发布文件

Javascript 在Django中使用jquery发布文件,javascript,jquery,python,html,django,Javascript,Jquery,Python,Html,Django,我想使用jquery将csv文件发布到django视图 <form id="form" enctype="multipart/form-data" > <input type="file" name="ListFile" id="ListFile" /> <button type="button" onclick="csv_send">upload</button> </form><br> django views.p

我想使用jquery将csv文件发布到django视图

<form  id="form" enctype="multipart/form-data" >
<input type="file" name="ListFile" id="ListFile" />
<button type="button" onclick="csv_send">upload</button>
</form><br>

django views.py:

def createlist(request):
    if request.method == 'POST':
        file =  request.FILES

这里没有获取文件。
我知道使用表单操作获取文件。但这里我想通过javascript发布文件,因为我希望成功后返回javascript响应。
显然,我希望通过请求将该文件保存在views.py.FILES中。上传文件时,表单必须具有以下属性:

enctype='multipart/form-data'
像这样:

<form  id="form" enctype='multipart/form-data'>


您必须使用FormData对象和稍加修改的基本ajax post版本:

    var data = new FormData();
    var file = null;

    //when uploading a file take the file
    $("#your-file-input-id").on("change", function(){
        file = this.files[0]
    });

    //append the file in the data
    data.append("file", file);

    //append other data
    data.append("message", "some content");

    $.ajax({
        url: '/path',
        type: 'POST',
        data: data,
        contentType: false,
        processData: false,
        success: function (data, status, xhr) {
            //handle success            },
        error: function (data, status, xhr) {
            //handle error
        }

    });
在Django中,您可以在request.FILES['file']中找到该文件。
我希望这是有帮助的

您缺少表单的参数
enctype=“multipart/form data”
@yedpodtrzitko现在也可以打印请求了。文件['ListName']提供了很好的。。。问题是你不能通过AJAX上传文件。您必须使用iframe(我这里有一些用于此目的的库:)实际上这个问题在这里得到了回答:@yedpodtrzitko在那里使用表单操作作为URL,然后还打印request.FILES
    var data = new FormData();
    var file = null;

    //when uploading a file take the file
    $("#your-file-input-id").on("change", function(){
        file = this.files[0]
    });

    //append the file in the data
    data.append("file", file);

    //append other data
    data.append("message", "some content");

    $.ajax({
        url: '/path',
        type: 'POST',
        data: data,
        contentType: false,
        processData: false,
        success: function (data, status, xhr) {
            //handle success            },
        error: function (data, status, xhr) {
            //handle error
        }

    });