मान लीजिए कि मेरे पास यह कोड है

class SnippetList(APIView):
    """
    List all snippets, or create a new snippet.
    """
    def get(self, request, format=None):
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return Response(serializer.data)

अब मान लेते हैं कि मेरे पास, मुझे request.data को संशोधित करने की आवश्यकता है

    def get(self, request, format=None):
        data = modify(request.data)
        request.data = data    # This don't work as i can't set attribute on request
        response = self.post(self, new_request, format=None)  # i want to do post method now with new request
        serializer = SnippetSerializer(snippets, many=True)

क्या उसे करने का कोई तरीका है

2
John Kaff 26 नवम्बर 2015, 01:20

2 जवाब

सबसे बढ़िया उत्तर

आप कुछ इस तरह की कोशिश कर सकते हैं:

def get(self, request, format=None):
        response = self.post(self, request, format=None, data=data )  # i want to do post method now with new request
        serializer = SnippetSerializer(snippets, many=True)

अब आपकी विधि पोस्ट होनी चाहिए:

def post(self, request, format=None, **kwargs):
        original_data = request.data
        additional_data = kwargs.get('data') # now you will be able to do whatever you want
        # more code goes here
1
ofnowhere 30 नवम्बर 2015, 07:47

आपको अपना डेटा प्राप्त नहीं करना चाहिए क्योंकि वे आमतौर पर "असुरक्षित" के रूप में चिह्नित होते हैं क्योंकि वे डेटा स्थिति को संशोधित करते हैं।

आप उपलब्ध अनुरोध के साथ गड़बड़ नहीं करना चाहते हैं। यह अक्सर हल करने की तुलना में अधिक मुद्दे बनाता है और कुछ जादू जोड़ता है।

यदि आप चाहते हैं कि भेजे गए अनुरोध की तुलना में धारावाहिककर्ता के पास अधिक डेटा हो, तो आपको उन्हें धारावाहिक के सेव फंक्शन में भेजना चाहिए। वे वैरिडेटेड_डेटा में जोड़े जाएंगे और धारावाहिक बनाने वाले / अद्यतन विधियों (http://www.django-rest-framework.org/api-guide/serializers/#passing-additional-attributes-to-save)

0
Linovia 26 नवम्बर 2015, 09:40