2016-12-16 6 views
0

クライアントUIは、1つのファイルまたは複数のファイルを送信できます。 私のバックエンドはそれを受け取ると、それが単一のファイルか複数のファイルかをチェックしたいと思います。 シングルの場合、私はそれをまっすぐに渡します(これはすでに動作しています)。 しかし、それが複数のファイルの場合は、最初に圧縮してから渡したいと思っています。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

を置きますself.context ['request'] 'available – Tony

+0

Tony、私のビューのput()をオーバーライドする方法は? – ipr

答えて

0

ああおかげで、私は最優先でプリントアウトすることができます `)(ビューの`ポストをオーバーライドしてください(または任意のHTTP動詞使用する)方法、そしてあなたのシリアライザは `を持っているかどうかを確認

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

関連する問題