我正在尝试使用DRF上传图像:
我有简单的序列化器:
class ImageSerializer(serializers.ModelSerializer):
class Meta:
model = Image
fields = ('file',)
在我的模型中,此file
字段很简单ImageField
。
然后我创建了视图集:
class ImagesViewSet(ModelViewSet):
serializer_class = ImageSerializer
queryset = Image.objects.all()
permission_classes = (IsAuthenticated,)
parser_classes = (MultiPartParser, FormParser)
@action(methods=['post'], detail=False,
permission_classes=[IsAuthenticated])
def upload_avatar(self, request):
print(request.data)
return Response({"image": "ok"})
我只想打印我要上传的内容。
在请求上传数据后:
我的查询区返回我:
<QueryDict: {}>
是虫子吗?还是我错过了什么?
DRF版本:3.8.2
Django:2.0.6
答案 0 :(得分:2)
可能是邮递员的错误。尝试在发送请求之前从邮递员的请求标头中删除Content-Type
。
有时邮递员没有设置正确的标题(内容类型)。这可能是问题所在。
答案 1 :(得分:1)
Django的request.FILES而不是request.data怎么样? Django Docs File Uploads说
当Django处理文件上传时,文件数据最终放置在request.FILES中。