Django文件使用jquery上传ajax调用帖

时间:2012-12-18 07:42:21

标签: ajax django file upload

我如何使用ajax调用上传文件? 我在模板中的表单

<form action="images/" enctype="multipart/form-data" method="POST" class="upload">                                            
    <table>
        {{ form.as_table }}
        <td><input type = "button" onclick="" value="Upload" id = "test"/</td>
    </table>
</form>

我的jQuery函数:

$(document).ready(function(){
    $("#test").click(function(){
        var string = $("form.upload").serialize();
        alert(string);
        $.ajax({
            url :'/test/',
            type:'post',
            data: {datas:string},  
        dataType: "json",           
         success: function(response) {
                    alert(response);
                  }
        });
    });
});

我的观点:

@csrf_exempt        
def test(request):
    if request.is_ajax():
        form = ImageUploadForm(request.POST)
        if form.is_valid():
            form.save()
        return HttpResponse("Saved !!!!")

这里我有文件上传的视图,但文件没有出现在django视图的表单变量中。我该怎么做才能在视图中获取文件? 表单有一个用于上传的文件字段。这是一种模型形式。

1 个答案:

答案 0 :(得分:4)

这里缺少两件重要的作品:

  1. jQuery.serialize()对文件字段没有任何作用。查看jQuery form plugin以获得通过Ajax发布表单的强大方法
  2. 您需要将上传的文件显式传递给表单构造函数:form = ImageUploadForm(data=request.POST, files=request.FILES)