[MRIQC 3-1] Flask를 사용해 HTML 파일 열어보기
21 May 2024 #mri
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 파일이 잘 띄워진 것을 볼 수 있습니다: