2011-11-12 34 views
11

鑑於一個簡單的Flask應用程序,我只是好奇,是否有一個正確的方法來修改響應在鉤子如process_response正確的方法來修改Flask中的響應與例如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覆蓋。

響應對象是在燒瓶dispacher機制(Flask.full_dispatch_request)上創建的。因此,如果您想以自己的方式創建響應對象,請覆蓋Flask.make_reponse。僅當使用創建的響應對象參數進行所需的修改時才使用Flask.process_response。

相關問題