2016-12-16 62 views
0

客戶端UI可以發送單個文件或多個文件。 當我的後端接收到它時,我想檢查它是單個還是多個文件。 如果它是單身,我只是直接通過它(這是工作已經)。 但是,如果它是多個文件,我想先壓縮它,然後傳遞它。在Django Rest Framework中,後臺如何檢查文件上傳是否爲多個?

我不知道Django Rest Framework在哪裏進行驗證。 我想無論是在串行以及在瀏覽

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(「文件」),但服務器始終在它能打印我的日誌之前拒絕請求。 任何想法,爲什麼發生? Django何時何地驗證並拒絕http請求?由於

+0

嘗試重寫你的觀點的'後()'(或者你使用任何HTTP動詞)方法,看看你的序列化有' self.context ['request']'available – Tony

+0

Tony,如何覆蓋我的視圖的put()? – ipr

回答

0

啊感謝託尼,我可以壓倒一切的打印出來放在

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) 
+0

當前,當我試圖打印request.data時,它將上傳的文件顯示爲「unicode」:u'upload':[u'[object FileList]'], – ipr