Flask 시작하기
Flask
는 파이썬으로 구동되는 웹 어플리케이션 프레임워크이다. Django
프레임워크보다 가벼워서 스케일이 작은 서버부터 큰 서버까지 만들 수 있다. 내가 필요한 건 파이썬 함수에서 계산된 값이 HTML
로 리턴되는 것이었는데, Flask
에서는 쉽게 할 수 있었다.
개발 환경은 PyCharm IDE
를 사용했다. 파이썬 개발뿐만 아니라 HTML, CSS, JS 편집까지 할 수 있고 패키지 설치, 디버깅이 간편했기 때문이다.
우선 파이참에서 프로젝트를 만든다.
main.py
1 | from flask import Flask, render_template |
main.py
파일을 프로젝트 폴더에 넣고 index.html
을 만들어 [프로젝트 폴더/templates]
폴더 내에 위치시킨다.
파일 배치가 완료된 모습이다.
이제 main.py
을 파이참에서 실행하면 0.0.0.0:5000
또는 localhost:5000
로 브라우저에서 접속할 수 있다. Flask에서 html
을 jinja
로 파이썬과 연동시켜 주었기때문에 실행 시 자동으로 index.html
로 연결된다.
파이썬에서 HTML 파일로 값을 넘기는 법을 알아보자.
Flask와 웹 연동하기
Python 값을 웹(HTML)에서 받기
파이썬에서 작성된 함수에서 발생된 리턴 값을 웹(HTML)에서 받아보자.main.py
에서 적당한 함수를 작성한다.
1 |
|
render_template
을 통해 index.html
에 result
값을 넘겨줄 수 있다. html에서는? calc_result
로 받는다. html에서 작성된 calc_result
값에 result
값이 들어가면서 index.html
로 리다이렉트 되는것이다.
index.html
1 | <html> |
{{ 변수 이름 }}
으로 작성하면 플라스크에서 값을 넘겨줄 수 있다. 이제 main.py
을 실행하면 {{ calc_result }}
는 2
로 렌더링되어 브라우저에 표시될 것이다.
이제 HTML에서 값을 넘기는 법을 알았으니 JavaScript
에서 받아보자.
index.html
1 | <html> |
자바스크립트를 index.html
의 body
태그 내에 선언하고 var
로 출력할 값을 선언 후 {{ 변수이름|tojson }}
으로 작성하면 플라스크에서 자바스크립트로 값을 넘겨줄 수 있다.
위 코드는 span
태그 내의 내용을 자바스크립트에서 innerHTML
을 사용하여 res
값으로 바꿔준다. 위 html에서 값을 받은 페이지와 실행 결과는 같지만 활용은 무궁무진할 것이다.
Flask 파일 업로드 구현
플라스크 내에서 웹을 이용한 기능들은 정말 많다. 이 중에서 내가 개발 중인 프로젝트에 필요한 주요 기능은 파일 업로드 기능이다.
main.py
1 | from werkzeug import secure_filename |
이 코드는 단순히 파일 업로드뿐만 아니라 확장자를 검사할 수 있다. ALLOWED_EXTENSIONS
에 허용할 확장자명을 선언하고 이미지 파일일 경우 uploads
폴더에 파일을 저장하고, 아닐 경우 html
에서 선언한 {{ data }}
에 경고 메시지를 리턴하며 index.html
로 리다이렉트한다.
마치며
Flask
에 대해서 어느정도 알아보았다.Flask
는 가볍지만 필요로 하는 기능들을 import
해서 얼마든지 사용할 수 있다. Python과 웹을 어느정도 다룰 줄 안다면 Flask는 접하기 쉬울 것이라 생각한다. 나는 파이썬 opencv
라이브러리를 통해 이미지 분석 기능을 제공하는 웹 서비스를 만들어 도커로 서버에서 서비스했는데, 파이썬을 웹에서 서비스하니 이미지 분석 등의 파이썬 고유의 라이브러리를 사용할 수 있는 등의 이점이 정말 많았다.