Flask 사용법 설치부터 라우팅까지 쉽게 배우기

Flask는 파이썬으로 웹 서버를 간단하게 만들 수 있는 가벼운 웹 프레임워크입니다. 필요한 기능만 골라서 붙이는 방식이라, 처음 웹 개발을 배우는 분들이 부담 없이 시작하기에 좋습니다.

Flask란? Django와 뭐가 다를까

파이썬으로 웹 개발을 한다고 하면 가장 많이 언급되는 두 가지가 Flask와 Django입니다. 둘 다 웹 프레임워크지만 성격이 많이 다릅니다.

항목FlaskDjango
특징마이크로(경량) 프레임워크풀스택 프레임워크
기본 제공 기능최소한만 제공, 필요시 직접 추가로그인, 관리자 페이지 등 기본 내장
학습 난이도낮음, 구조가 단순함상대적으로 높음, 규칙이 많음
적합한 경우소규모 프로젝트, 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 페이지 만들기, 데이터베이스 연동, 그리고 폼 데이터를 처리하는 방법을 순서대로 익히시면 자연스럽게 실력이 쌓입니다.

함께 보면 좋은 글

AI 파일 편집 설치 없이도 3분이면 끝나요 (무료)

WSL 설치부터 트러블슈팅까지 완벽 가이드

클로드 가격 총정리 Pro/Max/Team 뭐가 나을까

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다