你能发现我做错了什么吗?
#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); } });}
结果
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结果“没有提交文件.”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)