
Flask는 파이썬으로 웹 서버를 간단하게 만들 수 있는 가벼운 웹 프레임워크입니다. 필요한 기능만 골라서 붙이는 방식이라, 처음 웹 개발을 배우는 분들이 부담 없이 시작하기에 좋습니다.
Flask란? Django와 뭐가 다를까
파이썬으로 웹 개발을 한다고 하면 가장 많이 언급되는 두 가지가 Flask와 Django입니다. 둘 다 웹 프레임워크지만 성격이 많이 다릅니다.
| 항목 | Flask | Django |
| 특징 | 마이크로(경량) 프레임워크 | 풀스택 프레임워크 |
| 기본 제공 기능 | 최소한만 제공, 필요시 직접 추가 | 로그인, 관리자 페이지 등 기본 내장 |
| 학습 난이도 | 낮음, 구조가 단순함 | 상대적으로 높음, 규칙이 많음 |
| 적합한 경우 | 소규모 프로젝트, API 서버, 학습용 | 대규모 서비스, 빠른 정식 서비스 구축 |
쉽게 말해 Flask는 필요한 부품만 하나씩 골라 조립하는 방식이고, Django는 웬만한 부품이 이미 다 갖춰진 완성품에 가깝다고 말씀드릴 수 있습니다. 처음 웹 개발 구조 자체를 이해하고 싶다면 Flask로 기초를 다지는 게 좋습니다.
Flask 설치하기
Flask를 설치하기 전에 가상환경을 먼저 만들어두시는 걸 추천드립니다. 프로젝트마다 독립된 파이썬 환경을 쓰면 나중에 라이브러리 버전 충돌을 막을 수 있습니다.
1단계. 프로젝트 폴더를 만들고 이동합니다.
mkdir my_flask_app
cd my_flask_app
2단계. 가상환경을 생성합니다.
python -m venv venv
3단계. 가상환경을 활성화합니다.
# Windows
venv\Scripts\activate
# Mac / Linux
source venv/bin/activate
4단계. 가상환경이 활성화된 상태에서 Flask를 설치합니다.
pip install flask
터미널 맨 앞에 (venv)라는 표시가 뜨면 가상환경이 정상적으로 활성화된 것입니다.
첫 Flask 서버 만들어보기
설치가 끝났다면 실제로 간단한 서버를 하나 만들어보겠습니다. 프로젝트 폴더에 app.py 파일을 만들고 아래 코드를 작성합니다.
python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '안녕하세요, Flask 서버입니다!'
if __name__ == '__main__':
app.run(debug=True)
코드 설명
Flask(__name__): Flask 앱을 생성합니다.__name__은 현재 파일의 위치를 Flask에게 알려주는 역할을 합니다.@app.route('/'): 사용자가/주소로 접속했을 때 어떤 함수를 실행할지 연결해주는 부분입니다. 이걸 라우팅이라고 부릅니다.app.run(debug=True): 서버를 실행합니다.debug=True옵션을 켜두면 코드를 수정할 때마다 서버가 자동으로 재시작되고, 오류가 나면 상세한 에러 화면을 보여줍니다.
터미널에서 python app.py를 실행한 뒤, 브라우저에서 http://127.0.0.1:5000으로 접속하면 작성한 문구가 화면에 나타납니다.

동적 URL로 데이터 받아보기
고정된 페이지 외에, URL 뒤에 붙는 값에 따라 다른 내용을 보여주고 싶을 때는 동적 라우팅을 사용합니다.
python
@app.route('/user/<name>')
def user(name):
return f'{name}님 환영합니다!'
이제 http://127.0.0.1:5000/user/철수로 접속하면 “철수님 환영합니다!”라는 문구가 나타납니다. <name> 부분에 들어가는 값을 함수가 자동으로 받아서 처리해주는 방식입니다. 게시글 상세 페이지처럼 주소마다 다른 내용을 보여줘야 할 때 자주 사용하는 패턴입니다.
실행하다 자주 만나는 에러와 해결법
처음 Flask를 실행하다 보면 몇 가지 자주 마주치는 에러가 있습니다. 미리 알아두시면 당황하는 일은 없으실꺼예요.
Address already in use(포트 충돌): 5000번 포트를 다른 프로그램이 이미 쓰고 있을 때 발생합니다.app.run(port=5001)처럼 다른 포트 번호를 지정하면 해결됩니다.ModuleNotFoundError: No module named 'flask': 가상환경이 활성화되지 않은 상태에서 실행했을 가능성이 높습니다. 터미널에(venv)표시가 있는지 먼저 확인해 보세요.- 코드를 수정했는데 반영이 안 될 때:
debug=True옵션이 꺼져 있는 경우입니다. 옵션을 켜두면 저장할 때마다 서버가 자동으로 재시작됩니다.
저도 처음 Flask 서버를 켰을 때 포트가 이미 사용 중이라는 에러를 만나서 한참 헤맸던 적이 있는데, 알고 보니 이전에 실행해둔 서버를 끄지 않고 새로 실행해서 생긴 문제였더라고요. 에러 메시지를 차분히 읽어보면 대부분 원인을 금방 찾으실 수 있으실꺼예요.
자주 묻는 질문(FAQ)
Q1. Flask와 Django 중 뭘 먼저 배워야 하나요?
웹 개발의 기본 구조(라우팅, 요청과 응답)를 먼저 이해하고 싶다면 Flask로 시작하시는 걸 추천드립니다. 구조가 단순해서 핵심 개념을 익히기 좋습니다.
Q2. Flask로 실무에서 쓰는 서비스도 만들 수 있나요?
네, 실제로 많은 기업이 API 서버나 소규모 서비스에 Flask를 사용하고 있습니다. 다만 대규모 서비스라면 필요한 기능을 직접 추가해야 하는 만큼 개발 공수가 더 들 수 있습니다.
Q3. 가상환경을 꼭 사용해야 하나요?
필수는 아니지만 강력하게 추천드립니다. 프로젝트마다 독립된 환경을 유지하면, 다른 프로젝트의 라이브러리 버전과 충돌하는 문제를 미리 방지할 수 있습니다.
Q4. Flask 다음에는 뭘 배우면 좋을까요?
템플릿 엔진(Jinja2)을 활용한 동적 HTML 페이지 만들기, 데이터베이스 연동, 그리고 폼 데이터를 처리하는 방법을 순서대로 익히시면 자연스럽게 실력이 쌓입니다.