我正在尝试提交一个包含从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}
});
}