简体   繁体   English

在Django中使用jquery发布文件

[英]Post file using jquery in Django

I want to post a csv file to django view using jquery 我想使用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>


js is: js是:

function csv_send(){
var data = {
'csrfmiddlewaretoken' : $('input[name=csrfmiddlewaretoken]').val(),
'data': $("#ListFile").val()
}
/*$.ajax({
  type: 'POST',
  url:'/list/create/',
  cache:false,
  dataType:'json',
  data:data,
  success: function(result) {
     console.log("ok")
    }
 });*/
}


django views.py: django views.py:

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


here not getting file. 这里没有文件。
I know getting file using form action.But here i want to post file through javascript because i want response back to javascript after success. 我知道使用form action获取文件。但是在这里,我想通过javascript发布文件,因为我想在成功后回复javascript。 Clearly i want that file in views.py by request.FILES 显然我希望由request.FILES在views.py中的文件

When uploading files, your form must have this attribute: 上载文件时,您的表单必须具有以下属性:

enctype='multipart/form-data'

like this: 像这样:

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

This might help you understand. 这可以帮助您理解。

You have to use a FormData object and a slightly modified version of basic ajax post: 您必须使用FormData对象和基本ajax发布的稍微修改的版本:

    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
        }

    });

In Django you will find the file in request.FILES['file'] . 在Django中,您可以在request.FILES ['file']中找到该文件。 I hope this is helpful. 我希望这是有帮助的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM