Coffee Chat Brewing AI Knowledge

eng kor

[MRIQC 3-1] Flask를 사용해 HTML 파일 열어보기

MRIQC는 MRI 이미지의 퀄리티를 분석 및 평가 후 report를 HTML 파일로 출력해 줍니다. HTML 파일을 열어보기 위해서 Flask를 사용했는데요, 제가 사용한 방법을 정리해보겠습니다.

Flask

Flask는 Python으로 작성된 마이크로 웹 프레임워크입니다. 가볍고 유연한 구조로, 간단한 웹 애플리케이션과 API 서버를 빠르게 개발할 수 있도록 도와줍니다. 기본 기능만 포함하고 있어 확장성이 높고, 필요에 따라 다양한 플러그인과 확장 모듈을 추가할 수 있습니다. 또한, 배우기 쉽고 직관적인 코드 구조를 갖추고 있어 초보자에게도 적합합니다. 다만 최소한의 기능을 갖추고 있어서 복잡한 기능을 추가하기 위해선 외부 라이브러리를 사용해야 하며, 프로젝트 규모가 커질수록 유지보수가 어려워질 수 있습니다.

Flask로 HTML 파일 열기

Installing Flask

PyPI를 통해 설치할 수 있습니다:

pip install Flask

‘static/’과 ‘templates/’

Flask는 static/templates/ 두 폴더를 필요로 합니다. static/에는 HTML 파일에 존재하거나 적용되는 이미지, CSS, JavaScript 등 정적 파일을 저장합니다. templates/에는 렌더링할 HTML 파일을 저장합니다.

MRIQC 보고서를 여는 과정을 예시로 설명하겠습니다. 프로젝트 폴더에 위 두 폴더를 생성한 뒤, 정적 파일과 열고자 하는 HTML 파일을 각각 저장합니다.

HTML 파일 내 static/에 저장한 파일 경로가 이미 존재했다면 바뀐 경로로 수정해줍니다. MRIQC report HTML 파일을 열어보면 이미지 파일이 상대 경로로 지정되어 있습니다. 이미지를 static/에 옮겼으므로 이에 맞게 절대 경로로 바꿔줍니다:

실행 코드 작성

그리고 HTML 파일을 렌더링하기 위한 코드를 작성합니다. 위 예시 이미지 내 main.py에 해당합니다:

from flask import * 

app = Flask(__name__)
@app.route("/")
def test():
    return render_template("sub-001_ses-001_T1w.html")
app.run("0.0.0.0", port=5001)
  • app = Flask(__name__): Flask 애플리케이션 인스턴스를 생성합니다. __name__은 현재 모듈의 이름을 의미하며, Flask가 애플리케이션의 리소스를 찾는 데 사용됩니다.
  • @app.route("/"): 데코레이터로 기본 URL(/)에 대해 test 함수를 호출하도록 Flask에 지시합니다.
  • test(): 기본 URL이 요청될 때 실행될 함수입니다.
  • return render_template(HTML_FILE_NAME.html): templates/ 디렉토리에 있는 HTML 파일을 렌더링하여 반환합니다.
  • app.run("0.0.0.0", port=5001): 애플리케이션을 0.0.0.0 주소와 5001 포트에서 실행합니다.

결과

입력한 주소에 들어가보면 HTML 파일이 잘 띄워진 것을 볼 수 있습니다:


Reference