python – django rest framework 3 ImageField发送ajax结果“没有提交文件.”

python – django rest framework 3 ImageField发送ajax结果“没有提交文件.”,第1张

概述我有一个带有Django Rest Framework的API端点来上传图像. 你能发现我做错了什么吗? #models.py class test(models.Model): ... upload_path = 'upload/' image = models.ImageField(upload_to=upload_path, null=True, blank=True 我有一个带有Django Rest Framework的API端点来上传图像.
你能发现我做错了什么吗?

#models.py

class test(models.Model):    ...    upload_path = 'upload/'    image = models.ImageFIEld(upload_to=upload_path,null=True,blank=True)    ...

#serializers.py

class TestSerializer(serializers.ModelSerializer):    image = serializers.ImageFIEld(        max_length=None,use_url=True,)    class Meta:        model = test        fIElds = ('ID','name','image',...)

#vIEws.py

@API_vIEw(['GET','POST'])def test_List(request,site_ID,block_ID):            ....        if request.method == 'POST':            serializer = TestSerializer(data=request.DATA)            if serializer.is_valID():                serializer.save()                return Response(serializer.data,status=status.http_201_CREATED)            else:                return Response(                    serializer.errors,status=status.http_400_BAD_REQUEST)    else :        return Response(status=status.http_403_FORBIDDEN)

#Js

function setimage() {    var $input = $("#Js_teaser_img");    var fd = new FormData;    fd.append('image',$input.prop('files')[0]);    $.AJAX({        url: '/API/....',data: fd,processData: false,ContentType: false,type: 'POST',success: function (data) {            alert(data);        }    });}

结果图片:[“没有提交文件.”] 0:“没有提交文件.”

结果

Django REST Framework upload image: “The submitted data was not a file”

 

var reader = new fileReader();          reader.onload = function(e) {            var img_local = e.target.result;            $('.Js_img_src').attr('src',img_local);            $.post('/API/..../7/',{'image':img_local},function( data ) {                console.log(data);            });        }        reader.readAsDataURL(file);
解决方法 从客户端发送文件,你应该使用“multipart / form-data”(jquery将ContentType设置为“application / x-www-form-urlencoded”,默认情况下).
在SO: Sending multipart/formdata with jQuery.ajax上阅读这个问题

相反,对于python和django rest框架,您应该在API视图中使用MultiPartParser和/或fileUploadParser,并且应该“放置”文件上传的首选方法,正如您在此处的参考资料中所见:http://www.django-rest-framework.org/api-guide/parsers/#fileuploadparser.

PS.如果您使用django rest框架,我强烈建议您使用Angular而不是jquery,因为它为休息服务提供了极好的集成…相信我更好! 总结

以上是内存溢出为你收集整理的python – django rest framework 3 ImageField发送ajax结果“没有提交文件.”全部内容,希望文章能够帮你解决python – django rest framework 3 ImageField发送ajax结果“没有提交文件.”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存