在Django Rest Framework中,后端如何检查文件上传是否多次?

时间:2016-12-16 19:07:15

标签: django django-rest-framework

客户端UI可以发送单个文件或多个文件。 当我的后端收到它时,我想检查它是单个还是多个文件。 如果它是单一的,我只是直接传递(这已经工作)。 但如果它是多个文件,我想首先压缩它,然后传递它。

我很难搞清楚Django Rest Framework在哪里进行验证。 我在Serializer和Views

中都尝试过
class CTDWorkSerializer(serializers.ModelSerializer):


  class Meta:
    model = CTDWork
    fields = ('wo_id', 'owner', 'created',
            'purpose', 'work_type',
            'reviewer', 'status', 'upload', 'download')
    read_only_fields = ('download',)

  def update(self, validated_data):
    print "foo"
    return validated_data

class CTDWorkDetail(generics.RetrieveUpdateDestroyAPIView):
  queryset = CTDWork.objects.all()
  serializer_class = CTDWorkSerializer
  permission_classes = (permissions.IsAuthenticated, IsCurrentUserOrAdmin)
  parser_classes = (FormParser, MultiPartParser,)

  def perform_update(self,serializer,format=None):
    print "bar"

我正在考虑在视图中使用request.FILES.getlist(“files”),但服务器总是拒绝请求,然后才能在我的日志上打印一些内容。 任何想法,为什么会发生? Django在何时何地验证并拒绝http请求?感谢

1 个答案:

答案 0 :(得分:0)

非常感谢Tony,我可以打印出最重要的内容

class CTDWorkDetail(generics.RetrieveUpdateDestroyAPIView):
  queryset = CTDWork.objects.all()
  serializer_class = CTDWorkSerializer
  permission_classes = (permissions.IsAuthenticated, IsCurrentUserOrAdmin)
  parser_classes = (FormParser, MultiPartParser,)

  def put(self, request, *args, **kwargs):
    print request.data.get('upload')

    return self.update(request, *args, **kwargs)