【问题标题】:Django Rest Framework, Query Dict is empty when using MultiPartParserDjango Rest Framework,使用 MultiPartParser 时查询字典为空
【发布时间】:2018-06-23 13:24:43
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • @neverwalkaloner 已经这样做了,还是空的。
  • 可能是邮递员的错误。在发送请求之前,尝试从邮递员的请求标头中删除Content-Type。有时邮递员没有设置正确的标题(内容类型)。这可能是问题。
  • 可能是邮递员的错误。在发送请求之前尝试从邮递员的请求标头中删除Content-Type
  • @Kaushal。有效。奇怪的。这是一个非常烦人的错误。请你把它写成答案让我接受吗?
  • 确保它对其他用户也有帮助

标签: python django django-rest-framework


【解决方案1】:

这可能是邮递员的错误。在发送请求之前尝试从邮递员的请求标头中删除Content-Type

有时邮递员没有设置正确的标题(内容类型)。这可能是问题。

【讨论】:

    【解决方案2】:

    django 的 request.FILES 代替 request.data 怎么样? Django Docs File Uploads

    当 Django 处理文件上传时,文件数据最终放在 request.FILES..

    【讨论】:

      猜你喜欢
      • 2013-01-15
      • 1970-01-01
      • 2018-04-08
      • 2020-06-24
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多