Подтвердить что ты не робот

Правильный способ изменения ответа в 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()

Правильно ли просто создавать новый ответ каждый раз или канонически просто изменить параметр ответа на место и вернуть этот измененный ответ?

Это может быть чисто стилистическое, но мне интересно - и я ничего не заметил в своем чтении, что указывало бы на предпочтительный способ сделать это (хотя это, вероятно, довольно часто).

Спасибо за чтение.

4b9b3361

Ответ 1

Из документов Flask.process_response:

Может быть переопределено для изменения объекта ответа до его отправки на сервер WSGI.

Объект ответа создается на механизме дискового механизма флака (Flask.full_dispatch_request). Поэтому, если вы хотите создать объекты ответа по-своему, переопределите Flask.make_reponse. Используйте Flask.process_response только тогда, когда желаемые изменения могут быть сделаны с использованием созданного параметра объекта ответа.