[컴][파이썬] flask 에서 make_reponse 와 Response 의 차이



make_reponse 와 Response 의 차이

결국 2개는 같지만, make_response 가 좀 더 사용하기 편리하게 되어 있다고 보면 된다.

그러나 앞으로 flask 가 version up 되면서 Flask 의 response_class 를 Response class 외에 다른 class 로 교체를 하게 되는 경우가 발생한다고 가정한다면 make_response 를 사용하는 것이 호환성(compatibility)을 위해 좋을 듯 하다.

하지만 make_response 가 Response 를 완전히 이용할 수 있게 해주지 못한다. 좀 더 detail 한 Response class 의 이용을 위해서라면 Response 를 직접 호출하는 것이 낫다.

아니면 아래 처럼 사용할 수도 있다.
response = make_response(Response(generate(), mimetype='text/csv'))


# helpers.py
def make_response(*args):
    if not args:
        return current_app.response_class()
    if len(args) == 1:
        args = args[0]
    return current_app.make_response(args)


# flask/app.py
class Flask
    ...
    response_class = Response
    ...
    def make_response(self, rv):
        if isinstance(rv, tuple):
                    rv, status, headers = rv + (None,) * (3 - len(rv))
        if rv is None:
                    raise ValueError('View function did not return a response')

        if not isinstance(rv, self.response_class):
            if isinstance(rv, (text_type, bytes, bytearray)):
                rv = self.response_class(rv, headers=headers, status=status)

댓글 없음:

댓글 쓰기