我是Django和Django REST Framework的新手。我有以下序列化程序类,我用它来上传其他信息的文件。但是,当我使用上传文件运行API端点时,结果如下:
HTTP 415 Unsupported Media Type
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept
{
"detail": "Unsupported media type \"multipart/form-data; boundary=----WebKitFormBoundaryybZ07gjZAqvcsZw3\" in request."
}
我通过谷歌搜索努力解决这个问题,但无法在解决方案中出现,所以这里是我的序列化程序和API视图。
串行:
class ExampleSerializer(serializers.Serializer):
example_id = serializers.IntegerField()
description = serializers.CharField(allow_blank=True)
example_file = serializers.FileField(allow_empty_file=True)
def create_requirement_line(self):
request = self.context['request']
requirement_line = ExampleService().example_method(
example_id=self.validated_data['example_id'],
description=self.validated_data['description'],
example_file=self.validated_data['example_file']
)
return requirement_line
查看:
class RequirementLineAPIView(BaseCreateAPIView):
serializer_class = ExampleSerializer
parser_classes = (FormParser,)
def post(self, request, format=None,*args, **kwargs):
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
try:
example_variable = serializer.example_method()
return Response(example_variable, status=status.HTTP_200_OK)
except ValidationError as e:
return Response(e.message, status=status.HTTP_400_BAD_REQUEST)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
答案 0 :(得分:3)
如果您要发送多部分/表单数据,则应使用MultiPartParser而不是FormParser。
答案 1 :(得分:0)
尝试使用FileField解析器 Using Parsers in django rest
答案 2 :(得分:0)
在访问request.DATA或request.FILES时,如果没有解析器可以处理请求数据的内容类型,则引发该错误。
check Django REST Framework2 documentation
导入合适的解析器
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser
class SampleView(APIView):
parser_classes = (MultiPartParser,FormParser,JSONParser)