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)
댓글 없음:
댓글 쓰기