मान लीजिए कि मेरे पास यह कोड है
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 जवाब
आप कुछ इस तरह की कोशिश कर सकते हैं:
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
आपको अपना डेटा प्राप्त नहीं करना चाहिए क्योंकि वे आमतौर पर "असुरक्षित" के रूप में चिह्नित होते हैं क्योंकि वे डेटा स्थिति को संशोधित करते हैं।
आप उपलब्ध अनुरोध के साथ गड़बड़ नहीं करना चाहते हैं। यह अक्सर हल करने की तुलना में अधिक मुद्दे बनाता है और कुछ जादू जोड़ता है।
यदि आप चाहते हैं कि भेजे गए अनुरोध की तुलना में धारावाहिककर्ता के पास अधिक डेटा हो, तो आपको उन्हें धारावाहिक के सेव फंक्शन में भेजना चाहिए। वे वैरिडेटेड_डेटा में जोड़े जाएंगे और धारावाहिक बनाने वाले / अद्यतन विधियों (http://www.django-rest-framework.org/api-guide/serializers/#passing-additional-attributes-to-save)
संबंधित सवाल
नए सवाल
django
Django एक ओपन-सोर्स सर्वर-साइड वेब एप्लीकेशन फ्रेमवर्क है जिसे पायथन में लिखा गया है। यह कम कोड, विशेष-अतिरेक पर विशेष ध्यान देने और निहित से अधिक स्पष्ट होने के साथ जटिल डेटा-संचालित वेबसाइटों और वेब एप्लिकेशन बनाने के लिए आवश्यक प्रयास को कम करने के लिए डिज़ाइन किया गया है।