2011-11-12 12 views
11

Biorąc pod uwagę prostą aplikację Flask, jestem tylko ciekawy, czy istnieje odpowiedni sposób modyfikacji odpowiedzi w hakach, takich jak process_response?Właściwy sposób modyfikowania odpowiedzi w kolbie, np. Process_response

np. Biorąc pod uwagę:

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() 

Czy to wypada po prostu stworzyć nową odpowiedź za każdym razem, czy jest to po prostu edytować kanoniczna w miejscu parametru odpowiedzi i zwrot, że zmodyfikowaną odpowiedź?

To może być czysto stylistyczne, ale jestem ciekawy - i nie zauważyłem niczego w moim czytaniu, które wskazywałoby na preferowany sposób zrobienia tego (mimo że prawdopodobnie jest dość powszechny).

Dzięki za przeczytanie.

Odpowiedz

7

Od docs Flask.process_response:

może być zmieniona w celu zmodyfikowania obiekt odpowiedzi zanim zostanie wysłany na serwer WSGI.

Obiekt odpowiedzi jest tworzony na mechanizmie do sortowania w kolbie (Flask.full_dispatch_request). Więc jeśli chcesz tworzyć obiekty odpowiedzi na swój własny sposób, zastąp Flask.make_reponse. Użyj Flask.process_response tylko wtedy, gdy można wprowadzić pożądane modyfikacje za pomocą utworzonego parametru obiektu odpowiedzi.

Powiązane problemy