I am using Django Rest Framework and AngularJs to upload a file. My view file looks like this:
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)
As the last line of post method should return all the data, I have several questions:
- how to check if there is anything in
request.FILES
? - how to serialize file field?
- how should I use parser?
Advertisement
Answer
Use the FileUploadParser, it’s all in the request. Use a put method instead, you’ll find an example in the docs :)
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)