用RAW JSON POST请求上传图像? DRF-Django Rest框架

时间:2019-03-19 17:05:56

标签: json django-rest-framework request httprequest

如何上传带有原始json请求的图像。使用Django REST作为后端。

示例:

{ 
   'name':'RK Villa',
   'address':'Addres goes here'
   'images':[{'name':'Front','image':'local/url'},{'name':'Front','image':'local/url'}]
}

文件未附加。我正在尝试将此发送到Django rest框架。

1 个答案:

答案 0 :(得分:0)

要上传图片或文件,您需要使用html <form></form>元素。然后,您可以使用JavaScript FormData来抓取该文件。最后,将这个FormData对象通过ajax发送到后端。请遵循以下示例。

<form enctype="multipart/form-data">
    <input type="text" id="book_name">
    <input type="file" id="book_image">
    <button type="submit" id="submit_btn">Submit</button>
</form>

<script>
    $('#submit_btn').click(function(){
        var book_name = $('#book_name').val();
        var book_image = $('#book_image')[0].files[0];

        //I need to create a FormData object
        var fd = new FormData();

        fd.append('backend_book_name', book_name);
        fd.append('backend_book_image', book_image);

        //'backend_book_name' & 'backend_book_image' must be same to your drf model field name

        $.ajax({
            type:'post',
            url: 'http://localhost:8000/YOUR_URL',
            data: fd,
            processData: false,
            contentType: false,
            success: function(res){
                console.log(res);
            }
        });
    });  
</script>

别忘了在HTML表单中设置属性“ enctype = multipart / form-data”。