在 Django Rest Framework 中将文件作为表单的一部分上传返回 415



我正在尝试提交一个包含从angularJS到Django后端的附件的表单。我正在尝试完成文档,但仍然无法通过 415 错误。

这是我到目前为止的后端代码:

class TGBuildDetail(generics.RetrieveUpdateAPIView):
  queryset = TGBuild.objects.all()
  serializer_class = TGBuildSerializer
  permission_classes = (permissions.IsAuthenticated,)
  parser_classes = (FormParser, MultiPartParser,)
  def perform_update(self, serializer):
    print "Hello"

提前谢谢你。

我得到了这个工作。我什至不使用序列化程序上的FormParser,MultiPartParser或FileParser。

我就是这样做的。我主要遵循文件上传angularjs教程:https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs

在模板 html 中:

    <div class="col-sm-9"><input class="form-control" type="file" file-model="tgbuild.upload"></div>

然后我创建了指令文件:

angular.module('ctdgroup').directive('fileModel', ['$parse', function($parse) {
return {
     restrict: 'A',
     link: function(scope, element, attrs) {
        var model = $parse(attrs.fileModel);
        var modelSetter = model.assign;
        element.bind("change", function(){
           scope.$apply(function(){
             modelSetter(scope, element[0].files[0]);
           });
        });
     }
};   
}]);

然后,最后在我的服务中创建方法中.js:

function create(tgbuild) {
  tgbuild.status = OPEN;
  tgbuild.deployment_date = moment(tgbuild.deployment_date).format('YYYY/MM/DD');
  var fd = new FormData();
  for (var key in tgbuild){
    fd.append(key, tgbuild[key]);
  }
  return $http.post('/tgbuilds/', fd, {
    transformRequest: angular.identity,
    headers: {'Content-Type': undefined}
  });
}

最新更新