简体   繁体   中英

How to pass data saved from a POST method to the GET method using REST API Django (without a model)?

I have created an API that allows me to upload an image using the POST method in POSTMAN. After submission, I want to display that image name after making a GET request. I am not using any model and I don't intend to grab the image from the directory it is stored in; since I will be uploading images in a server later.

I have looked at multiple sources. A few examples are this , and this .

This is my current code so far but not successful:

views.py:

class API(APIView):
    parser_classes = (MultiPartParser,)

    def get(self, request, *args, **kwargs):
        name = self.request.GET.get('image')
        if name:
            return Response({"img_name": name}, status=200)
        return Response({"img_name" : None}, status = 400)

    def post(self, request):
        file = self.request.data    
        img_file = file['image']   #store the image data in this variable
        if img_file:
            uploaded_file = img_file
            img = [{"image_name": uploaded_file}]  
            serializer = ImgSerializer(img, many = True).data
            return Response(serializer, status = 200)               
        else:
            return Response("Please upload", status = 400)

serializers.py:

from rest_framework import serializers

class ImgSerializer(serializers.Serializer):
    image_name = serializers.CharField()

My expected result within GET request should be like this:

{'image_name' : 'image_name_from_POST_Request'}

But I am getting this result instead:

None

How can I pass data from the POST request to the GET request using Django's rest framework? Is there an efficient way to deploy this requirement without using a model?

I figured it out. I just created a JSON file in the POST method and stored the necessary data in it. Finally, in order to view the data within the GET method, I opened the file and returned it as a Response.

views.py:

class API(APIView):
    parser_classes = (MultiPartParser,) 

    def get(self, request):
        with open('data.txt') as json_file:
            data = json.load(json_file)
        if data:
            return Response(data, status=200)
        return Response({"name" : None}, status = 400)


    def post(self, request):
        posted_file = self.request.data
        img_file = posted_file['image']
        if img_file:
            uploaded_file = img_file
            data = [{"image_name": uploaded_file}]   
            json_data = {"image_name": uploaded_file}
            data = {}
            data['key'] = []
            data['key'].append(json_data)
            with open('data.txt', 'w') as outfile:
                json.dump(image, outfile)
            serializer = ImgSerializer(image, many = True).data
            return Response(serializer, status = 200)               
        else:
            return Response(serializer.errors, status = 400)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM