5분 이내에 Python Flask를 설명합니다.
Python Flask는 파이썬 기반 웹 애플리케이션 개발을 위한 소규모 프레임워크입니다.
이 프레임워크는 뛰어난 유연성과 사용자 맞춤 설정 기능을 제공하여 학습이 용이하며, 웹 서버 구축에 널리 활용되는 이유 중 하나입니다. 본 글에서는 Python Flask의 정의, 다른 프레임워크와의 비교, 그리고 파이썬을 이용한 기본적인 애플리케이션 제작 방법에 대해 알아보겠습니다.
플라스크란 무엇인가?

플라스크는 파이썬으로 웹 서버를 개발하기 위한 도구입니다. 다른 프레임워크와는 달리, 특정 디렉토리 구조를 강제하지 않아 개발자가 자유롭게 구조를 설정할 수 있습니다.
더불어 독립적인 구조를 가지고 있어, 데이터베이스 연결이나 폼 입력 유효성 검증과 같은 작업을 수행할 때 선호하는 도구를 선택하여 사용할 수 있습니다.
앞서 언급했듯이, Flask는 웹 서버를 구축하는 데 사용됩니다. 웹 서버는 HTTP 요청에 대해 적절한 데이터와 파일로 응답하는 역할을 하는 소프트웨어입니다.
Flask와 다른 프레임워크 비교
이 섹션에서는 Flask를 다른 인기 있는 프레임워크인 Django 및 FastAPI와 비교하여, 각각의 장단점을 간략하게 살펴보겠습니다.
플라스크 vs 장고
Flask는 가볍고 간결한 마이크로 프레임워크입니다. 개발자에게 단순함과 유연성을 제공하여 원하는 대로 앱을 만들 수 있도록 지원합니다. 하지만 이는 개발자가 직접 많은 부분을 처리해야 한다는 것을 의미하기도 합니다.
반면에 Django는 다양한 도구가 미리 구성되어 제공되는 '배터리 포함' 프레임워크입니다. 덕분에 개발 속도를 높일 수 있지만, 유연성이 부족하고 학습 곡선이 다소 가파르다는 단점이 있습니다.
이러한 이유로 Flask는 중소규모 프로젝트에 적합하며, Django는 크고 복잡한 프로젝트에 더 자주 사용됩니다.
더 자세한 정보: Flask와 Django의 차이점
플라스크 vs FastAPI
FastAPI는 Python을 사용하여 API를 구축하는 데 특화된 비교적 새로운 프레임워크입니다. 빠른 속도와 사용 편의성을 제공하며, 내장된 모니터링 기능도 갖추고 있습니다. 하지만 상대적으로 규모가 작은 생태계와 커뮤니티를 가지고 있으며, 주로 API 개발에만 사용됩니다.
반면 Flask는 API 개발뿐만 아니라 정적 파일 렌더링에도 활용 가능하여 더 높은 다양성을 제공합니다. 가볍고 비교적 사용하기 쉽지만, 속도 면에서는 FastAPI에 비해 다소 느립니다.
Flask는 HTML 렌더링이 필요한 웹 애플리케이션에, FastAPI는 API 구축에 더 적합합니다.
추가 정보: FastAPI와 Flask: 어떤 것이 당신에게 맞을까?
Flask로 애플리케이션 만들기
이 섹션에서는 HTML을 표시하고 API를 통해 데이터를 제공하는 간단한 Flask 애플리케이션을 만들어 보겠습니다. 여기서의 목표는 Flask에 대한 심층적인 튜토리얼을 제공하는 것이 아니라, Flask 앱을 구축하는 과정을 간략하게 보여주는 것입니다.
필수 조건
이 튜토리얼을 따라 하기 위해서는 Python 3에 대한 기본적인 이해가 필요합니다. 또한 HTTP에 대한 지식이 있으면 도움이 될 수 있지만 필수는 아닙니다.
Flask로 애플리케이션을 만들려면 먼저 Python을 설치해야 합니다. 설치 방법에 대한 자세한 안내는 다음 영상을 참고하세요.

가상 환경 설정
먼저 애플리케이션을 위한 프로젝트 폴더를 생성합니다. Bash 터미널을 사용하고 있으므로 다음 명령으로 폴더를 만들 수 있습니다.
mkdir flask-tut
다음으로 다음 명령어를 사용하여 폴더로 이동합니다.
cd flask-tut
폴더로 이동한 후, 이 명령을 사용하여 가상 환경을 만듭니다. 이렇게 하면 설치하는 종속성이 다른 프로젝트의 종속성과 충돌하는 것을 방지할 수 있습니다.
python3 -m venv venv
그러면 다음 명령을 통해 확인할 수 있는 'venv' 폴더가 생성됩니다.
ls

가상 환경 활성화
가상 환경을 활성화하는 방법은 간단합니다. Bash 터미널에 다음 명령을 입력합니다.
source venv/bin/activate
터미널 프롬프트가 $에서 (venv) $로 변경되어야 합니다.

자세한 내용은 파이썬 가상 환경에 대한 다른 자료를 참고하시기 바랍니다.
플라스크 설치
가상 환경이 활성화되면 이제 Flask를 설치할 수 있습니다. pip를 사용하면 됩니다.
pip install Flask
설치를 진행하면 필요한 파일과 종속성을 다운로드합니다.

HTML 제공하기
다음으로 'main.py' 파일을 만들고 작업을 시작할 수 있습니다. 이 파일은 애플리케이션의 진입점이 될 것입니다.
touch main.py
main.py 파일을 생성한 후, 원하는 편집기로 열고 다음 코드를 추가합니다.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return '<h1>Hello from Flask!</h1>'
위 코드에서 Flask 클래스를 가져오는 것으로 시작했습니다. 그다음으로 __name__ 변수를 전달하여 Flask 클래스를 인스턴스화했습니다. __name__ 변수는 현재 모듈의 이름을 저장하는 내장 변수이며, Flask는 이 정보를 통해 파일의 위치를 알 수 있습니다. 생성한 Flask 인스턴스는 'app' 변수에 저장합니다.
다음으로 'index' 함수를 생성했습니다. 이 함수는 사용자에게 표시될 HTML을 반환합니다. 함수 정의 바로 위에 @app.route 데코레이터를 사용했는데, 이 데코레이터는 일반 함수를 Flask 뷰 함수로 변환합니다. 즉, 해당 함수에서 반환되는 값이 HTML 응답으로 처리된다는 의미입니다.
애플리케이션을 실행하려면 다음 명령을 사용합니다.
flask --app main run
--app 플래그는 애플리케이션의 위치를 지정하며, 이 경우에는 'main.py'입니다. 서버가 실행되기 시작할 것입니다.

브라우저에서 http://localhost:5000 또는 http://127.0.0.1:5000에 접속하면 h1 태그가 표시됩니다.

일반적으로 모든 HTML 코드를 Python 코드 내에 작성하는 것은 좋은 방법이 아닙니다. HTML과 Python 코드를 분리하는 것이 이상적입니다. 다음 섹션에서는 독립된 HTML 파일을 제공하는 방법을 알아보겠습니다.
HTML 파일 제공하기
이 섹션에서는 웹사이트에 'index.html' 파일을 제공하는 코드를 작성해 보겠습니다. 먼저 'index.html' 파일을 만들어야 합니다. Flask는 HTML 템플릿을 'templates' 폴더에서 찾으므로 해당 폴더 내부에 파일을 생성합니다.
touch template/index.html
파일을 원하는 편집기로 열고 다음 코드를 추가합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Flask Website</title>
</head>
<body>
<h1>Hello from Flask!</h1>
</body>
</html>
다음으로, 앞서 생성한 'main.py' 파일을 다시 열고 Flask import 구문 바로 아래에 다음 import 구문을 추가합니다.
from flask import render_template
방금 import한 'render_template' 함수를 사용하면 HTML 템플릿을 제공할 수 있습니다. HTML 파일을 렌더링하기 위해 'index' 함수를 다음과 같이 수정합니다.
@app.route("/")
def index():
return render_template('index.html')
서버를 중지(Ctrl + C)한 후 다음 명령을 사용하여 다시 시작합니다.
flask --app main run
브라우저 창을 새로고침하면 다음이 표시됩니다.

이 예에서는 정적인 HTML 페이지를 표시했습니다. Flask를 사용하면 HTML 템플릿을 만들고 데이터를 제공하여 템플릿을 표시할 수도 있습니다. 이러한 템플릿은 Jinja 구문을 따릅니다. 여기서는 간략하게만 설명했지만, Flask 학습을 위한 좋은 자료를 링크해 드릴 테니 추후에 더 자세히 공부하시기 바랍니다.
API 경로 만들기
HTML 콘텐츠를 표시하는 것은 웹 애플리케이션의 중요한 기능 중 하나이며, 다른 기능으로는 API 경로를 통해 데이터를 제공하는 것이 있습니다. Flask에서는 API 경로 설정 또한 간단합니다. '/data'에 API 경로를 생성하려면 'main.py' 파일에 다음 코드를 추가합니다.
@app.route('/data')
def data():
return { "status": "OK", "msg": "Hello from Flask API" }
함수가 사전 또는 목록을 반환하면 해당 값은 JSON으로 변환되어 응답으로 전송됩니다. 서버를 다시 시작하고 http://localhost:5000/data를 열면 다음이 표시됩니다.

Flask 학습 자료
❇️ 플라스크 공식 문서는 학습에 매우 훌륭한 자료입니다. 구조가 잘 되어 있고 명확하며, Flask를 배우는 데 가장 신뢰할 수 있는 자료일 것입니다.
❇️ freeCodeCamp에는 훌륭한 YouTube 영상이 있습니다. freeCodeCamp는 무료이지만 고품질의 학습 자료를 제공하는 것으로 잘 알려져 있습니다.
❇️ 이 Udemy 강좌는 Flask로 엔터프라이즈급 API를 구축하는 방법을 배우는 데 유용한 자료입니다. Flask-SQLAlchemy 및 Flask-Smorest와 같은 도구를 다루고 있습니다.
결론
이 글은 Python Flask에 대한 간략한 소개였습니다. 우리는 Flask가 무엇인지 알아보고, 다른 웹 프레임워크와 비교했으며, 간단한 애플리케이션을 구축했습니다. 마지막으로 추가 학습을 위한 자료를 안내해 드렸습니다.
다음으로는 JSON 웹 토큰을 사용하여 Flask REST API를 보호하는 방법을 알아보세요.