2011-11-12 4 views
11

एक साधारण Flask एप्लिकेशन को देखते हुए, मैं इस बारे में उत्सुक हूं कि process_response जैसे हुक में प्रतिक्रिया को संशोधित करने का कोई उचित तरीका है या नहीं?फ्लास्क में प्रतिक्रिया को संशोधित करने का उचित तरीका उदाहरण के साथ process_response

उदा। यह देखते हुए:

from flask import Flask, Response 

class MyFlask(Flask): 
    def process_response(self, response): 
     # edit response data, eg. add "... MORE!", but 
     # keep eg mimetype, status_code 
     response.data += "... This is added" # but should I modify `data`? 
     return response 
     # or should I: 
     #  return Response(response.data + "... this is also added", 
     #      mimetype=response.mimetype, etc) 

app = MyFlask(__name__) 

@app.route('/') 
def root(): 
    return "abddef" 

if __name__ == '__main__': 
    app.run() 

यह सिर्फ हर बार एक नया प्रतिक्रिया बनाने के लिए उचित है, या यह सिर्फ यथा-स्थान संपादित करने के लिए प्रतिक्रिया पैरामीटर और बदले कि प्रतिक्रिया संशोधित विहित है?

यह पूरी तरह स्टाइलिस्ट हो सकता है, लेकिन मैं उत्सुक हूं - और मैंने अपने पढ़ने में कुछ भी नहीं देखा है जो ऐसा करने का पसंदीदा तरीका इंगित करेगा (भले ही यह संभवतः काफी आम है)।

पढ़ने के लिए धन्यवाद।

उत्तर

7

Flask.process_response डॉक्स से:

आदेश प्रतिक्रिया ऑब्जेक्ट को संशोधित करने में ओवरराइड किया जा सकता से पहले यह WSGI सर्वर के लिए भेजा है।

प्रतिक्रिया ऑब्जेक्ट फ्लास्क डिस्पैचर तंत्र (Flask.full_dispatch_request) पर बनाया गया है। तो यदि आप अपने तरीके से प्रतिक्रिया वस्तुओं को बनाना चाहते हैं, तो Flask.make_reponse ओवरराइड करें। Flask.process_response केवल तभी उपयोग करें जब इच्छित प्रतिक्रिया ऑब्जेक्ट पैरामीटर का उपयोग करके वांछित संशोधन किए जा सकें।

संबंधित मुद्दे