1. ホーム
  2. python

[解決済み] Django Rest Framework ファイルアップロード

2022-07-08 17:05:55

質問

私はDjango Rest FrameworkとAngularJsを使用してファイルをアップロードしています。私のビューファイルは次のようになります。

class ProductList(APIView):
    authentication_classes = (authentication.TokenAuthentication,)
    def get(self,request):
        if request.user.is_authenticated(): 
            userCompanyId = request.user.get_profile().companyId
            products = Product.objects.filter(company = userCompanyId)
            serializer = ProductSerializer(products,many=True)
            return Response(serializer.data)

    def post(self,request):
        serializer = ProductSerializer(data=request.DATA, files=request.FILES)
        if serializer.is_valid():
            serializer.save()
            return Response(data=request.DATA)

postメソッドの最後の行は、すべてのデータを返す必要があるため、いくつかの質問があります。

  • に何かあるかどうかを確認する方法 request.FILES ?
  • ファイルフィールドをシリアライズする方法は?
  • パーサーはどのように使用すればよいですか?

どのように解決するのですか?

を使用します。 FileUploadParser を使用します。 代わりにputメソッドを使いましょう、ドキュメントに例があります :)

class FileUploadView(views.APIView):
    parser_classes = (FileUploadParser,)

    def put(self, request, filename, format=None):
        file_obj = request.FILES['file']
        # do some stuff with uploaded file
        return Response(status=204)