来自POST文件上传的django JsonResponse

时间:2014-12-09 15:37:51

标签: javascript python json django

我正在玩django的fileupload,并在示例中获得了他们的文档。现在,我想使用像这样的JsonResponse来修改响应:

def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'])
            # this is default as in django 1.7 docs:
            # return HttpResponseRedirect('/success/url/')
            # this is what I want to implement
            return JsonResponse({'foo': "bar"})
    else:
        form = UploadFileForm()
        return render_to_response('upload.html', {'form': form})

现在,我想要的是在我的模板上显示return JsonResponse({'foo': "bar"})。但是,我不确定如何在JS方面get这个变量。例如,像:

<script type='text/javascript'>
    var data = {{ foo }};
    console.log(data);
</script>

..但这不起作用 - 我不知道如何使用django中的JsonResponse对象在JS中获取数据。

任何帮助都会很棒!

更多信息

由于我使用dropzone.js来处理我的文件上传,因此我有以下JS代码:

## load dropzone.js
<script type="text/javascript">
    Dropzone.options.myDropzone = {
        paramName: "file_field", // The name that will be used to transfer the file
        maxFilesize: 20, // MB
        // Prevents Dropzone from uploading dropped files immediately
        autoProcessQueue : true,
        clickable : true,

  init: function() {
    this.on("success", function(file, responseText) {
      // Handle the responseText here. For example, add the text to the preview element:
      file.previewTemplate.appendChild(document.createTextNode({{django_json}}));
    });
  }

        };

    </script>

1 个答案:

答案 0 :(得分:1)

您发布的JS代码段显示了您需要处理返回的JSON的位置。数据传递到您的成功函数&#34; responseText&#34;:

this.on("success", function(file, responseText) {
  file.previewTemplate.appendChild(responseText);
});

但您可能希望使用JSON.parse将其转换为实际的JS对象。