Python/Python 웹프로그래밍

[Flask-①] 파이썬 Flask 기본 개념과 개발 환경 설정

코딩 코디네이터 2025. 4. 15. 08:00
반응형

파이썬 Flask 기본 개념과 개발 환경 설정

웹 개발, 어떻게 시작해야 할까요?
너무 무겁고 복잡한 프레임워크에 지쳤다면,
Flask로 가볍고 유연하게 시작해보세요!

 

 

안녕하세요, 여러분 반갑습니다!

오늘은 웹 개발 입문자에게 딱 맞는 Python 기반 마이크로 프레임워크 Flask에 대해 함께 배워볼 거예요.

Flask는 배우기 쉽고, 필요한 기능만 붙여서 쓸 수 있어서 초보자에게 정말 잘 맞는 프레임워크랍니다.

이 글에서는 Flask가 어떤 도구인지, 왜 사용하는지부터 개발 환경을 설정하고 "Hello, World!"까지 웹앱을 직접 실행해보는 것까지 단계별로 친절하게 설명드릴게요.

천천히 따라오시면서 한 줄 한 줄 실행해 보세요.

분명 재미있고 보람찬 시간이 될 거예요. 😊

 

1. Flask란 무엇인가요? 🧩

웹 개발을 처음 접하는 분들이라면 Flask라는 이름이 조금 생소하게 들릴 수도 있습니다.

하지만 Python 언어를 배우셨다면, Flask는 웹 애플리케이션 세계로 자연스럽게 이어주는 친절한 안내자 같은 존재예요. 😄

Flask는 마이크로 웹 프레임워크입니다.

여기서 '마이크로'란 작고 기능이 제한적이라는 뜻이 아니라, 필수적인 최소한의 구성만 제공한다는 의미입니다.

즉, 필요한 기능을 사용자가 직접 선택하고 조립해서 쓸 수 있어요.

🔍 웹 프레임워크란?

웹 프레임워크는 웹 애플리케이션 개발을 쉽게 해주는 도구 모음이에요.

일반적으로 웹 개발에는 HTTP 처리, 라우팅, 요청/응답 관리, 템플릿 렌더링, 데이터베이스 연동 등 다양한 기능이 필요합니다.

이걸 모두 직접 짜려면 시간도 오래 걸리고, 실수도 많겠죠?

그래서 우리는 웹 프레임워크를 사용합니다.

대표적으로 Django는 많은 기능이 내장된 풀스택 프레임워크이고,

Flask는 꼭 필요한 기능만 기본으로 제공하는 마이크로 프레임워크입니다.

🧠 Flask의 내부 구조와 작동 원리 간단히 알아보기

Flask는 내부적으로 WSGI(Web Server Gateway Interface)라는 표준을 따릅니다.

이 덕분에 Flask 애플리케이션은 다양한 Python 웹 서버와 호환될 수 있어요.

 

간단히 말하면, 사용자의 브라우저 요청 → Flask가 요청 처리 → 결과를 응답으로 반환하는 흐름이에요.

이 요청-응답 흐름을 이해하는 것이 이후 라우팅, 뷰 함수, 템플릿 등 모든 Flask 기능을 배우는 기초가 됩니다.

  • Flask는 단순하고 가볍습니다 — 필요한 기능만 골라서 사용 가능
  • WSGI 표준에 따라 Python 기반 웹 서버와 호환됩니다
  • 라우팅, 요청 처리, 응답 생성 등 웹의 기본 흐름을 직접 경험할 수 있어요

이제 Flask의 기본 개념과 작동 방식이 조금 이해되셨죠? 😊

다음 섹션에서는 Flask가 왜 이렇게 많이 사랑받는지, 어떤 점이 특별한지를 구체적으로 알아볼 거예요!

 

 

2. Flask의 주요 특징과 장점 💡

Flask는 단순하면서도 확장 가능한 구조 덕분에 초보자부터 전문가까지 모두가 애용하는 프레임워크입니다. "필요한 것만 붙인다!"는 유연한 설계 철학이 Flask의 핵심이에요.

그럼 Flask가 왜 사랑받는지, 어떤 강점들이 있는지 하나씩 살펴볼까요?

🎯 Flask의 핵심 특징

  • 심플한 구조: 단 하나의 파일로도 전체 웹 앱을 실행할 수 있어요.
  • 유연성: 프로젝트 구조를 자유롭게 설계 가능! 마이크로서비스에도 적합합니다.
  • 확장성: 플러그인 및 확장 라이브러리를 통해 기능 추가 가능 (예: SQLAlchemy, Flask-Login).
  • 방대한 커뮤니티와 자료: 공식 문서가 잘 되어 있고, 튜토리얼도 엄청 많아요.

💻 Flask vs Django: 비교로 보는 특징

비교 항목 Flask Django
프레임워크 유형 마이크로 프레임워크 풀스택 프레임워크
구조 자유롭고 유연함 엄격한 구조
초보자 적합성 빠르게 시작 가능 처음엔 다소 복잡
확장성 라이브러리 추가 방식 내장 기능 풍부

이처럼 Flask는 자유도와 단순함이 큰 매력입니다.

게다가 파이썬스럽게 직관적인 코드 작성이 가능해서, 배우면 배울수록 더 잘 만들고 싶어지는 프레임워크예요.

이제 Flask의 매력을 알았으니, 다음은 개발 환경을 어떻게 구성할지 알아볼 차례입니다! ✨

 

 

3. 개발 환경 구성하기 (venv, 설치) 🛠

Flask 개발을 시작하기 위해선 먼저 작업을 위한 안전한 공간, 즉 가상환경을 만드는 게 중요합니다.

왜냐하면 프로젝트마다 사용하는 라이브러리 버전이 다를 수 있고, 시스템 전체에 영향을 주지 않기 위해서죠.

🌱 가상환경 만들기

다음은 Python 내장 도구 venv를 사용해 가상환경을 만들고 활성화하는 과정입니다.

# 가상환경 생성
python -m venv venv

# Windows에서 활성화
venv\Scripts\activate

# macOS / Linux에서 활성화
source venv/bin/activate

터미널 프롬프트 앞에 (venv)가 붙으면 성공입니다. 이제 Flask를 설치해볼 차례예요.

📦 Flask 설치하기

pip install Flask

정상 설치되었다면, 다음 명령어로 설치된 버전을 확인할 수 있어요.

python -m flask --version

🗂 프로젝트 기본 구조

지금은 단일 파일 구조로 충분합니다.

이후 앱이 커지면 파일을 나누게 되지만, 현재는 아래처럼 하나의 파일로 시작해도 전혀 문제 없어요.

/프로젝트폴더
│
├── venv/               # 가상환경 폴더
├── app.py              # Flask 메인 애플리케이션

간단하죠?

다음 단계에서는 app.py 내부 구조와 실행 흐름을 차근차근 배워볼 거예요.

Flask가 어떻게 실행되고, URL 요청을 어떻게 처리하는지 눈으로 확인할 시간입니다!

 

 

4. Flask 애플리케이션의 구조 이해하기 🧱

본격적으로 Flask 앱을 실행해보기 전에,

app.py 안에 어떤 코드가 들어가고 어떤 구조로 작동하는지부터 알아야 해요.

이해가 되면 앞으로 라우팅이든 템플릿이든, 어떤 기능을 추가할 때도 훨씬 수월해집니다. 😎

🧪 Flask 애플리케이션 생성: Flask(__name__)

from flask import Flask

app = Flask(__name__)

이 코드가 Flask 애플리케이션의 시작입니다.

여기서 __name__은 파이썬 내장 변수로 현재 모듈의 이름을 나타내며,

Flask는 이를 통해 현재 파일이 직접 실행된 것인지 혹은 다른 모듈에서 import된 것인지를 구분해요.

🔀 라우팅과 뷰 함수 기본 구조

@app.route("/")
def home():
    return "Hello, Flask!"

@app.route()는 Flask에서 URL 경로를 정의하는 방법입니다.

위 예시에서는 / (루트 경로)로 들어오는 요청에 대해 home() 함수가 실행되고,

브라우저에 Hello, Flask!가 출력돼요.

 

즉, 브라우저 요청 → Flask 라우터 → 뷰 함수 → 응답 반환의 구조입니다.

  1. 브라우저에서 http://localhost:5000/ 요청
  2. Flask 내부 라우팅 시스템이 해당 URL을 찾음
  3. home() 함수 실행
  4. 문자열을 HTTP 응답으로 브라우저에 전달

🚦 개발 서버 실행: flask run

# 환경변수 설정 (Windows)
set FLASK_APP=app.py

# macOS / Linux
export FLASK_APP=app.py

# 개발 서버 실행
flask run

이제 브라우저에서 http://localhost:5000에 접속하면 방금 만든 응답 메시지를 볼 수 있어요!

또한 --debug 옵션을 주면 코드 수정 시 자동 반영되고, 에러도 브라우저에서 확인할 수 있답니다.

 

지금까지 우리는 Flask 앱의 기본 구조를 확인했고, 어떻게 라우팅을 통해 요청을 처리하는지 익혔습니다.

이제 정말 재미있는 시간! 첫 번째 Flask 애플리케이션을 만들어볼 차례예요. ✨

 

 

5. 라우팅과 뷰 함수의 개념 🌐

웹 애플리케이션에서 라우팅(Routing)은 사용자가 특정 URL에 접근했을 때 어떤 기능을 실행할지 결정하는 중요한 역할을 해요.

Flask에서는 라우팅과 뷰 함수(View Function)를 아주 간단하게 설정할 수 있습니다.

🧭 라우팅(Routing)이란?

라우팅은 URL 경로와 처리할 함수를 연결하는 과정이에요.

예를 들어

사용자가 /hello라는 주소에 접근했을 때 어떤 메시지를 보여줄지를 Flask에게 알려줘야 하죠.

@app.route('/hello')
def say_hello():
    return "안녕하세요!"

위 코드에서 @app.route('/hello')는 URL 경로 /hello를 처리하는 역할을 해요.

사용자가 이 경로로 접속하면 say_hello() 함수가 실행되고, 그 반환값이 브라우저에 출력됩니다.

👀 뷰 함수(View Function)의 역할

뷰 함수는 URL 요청이 들어왔을 때 실행되는 함수입니다.

이 함수는 반드시 문자열, HTML, JSON 등 응답 가능한 형태의 데이터를 반환해야 해요.

즉, 라우팅은 주소와 함수를 연결하고, 뷰 함수는 실제로 실행되는 동작을 정의합니다.

🔄 클라이언트 요청부터 응답까지의 흐름

  1. 사용자가 브라우저에서 /hello 주소로 요청을 보냄
  2. Flask가 해당 경로에 맞는 라우트를 찾음
  3. say_hello() 뷰 함수가 실행됨
  4. 반환된 응답을 HTTP 형식으로 변환해 브라우저에 전달

🌐 다양한 라우트 경로 구성 팁

  • @app.route('/user/<username>') : 동적인 URL 처리 (예: /user/alice)
  • @app.route('/post/<int:post_id>') : 숫자형 ID 처리 (예: /post/42)

Flask의 라우팅 시스템은 정말 강력하고 직관적이에요.

필요하다면 methods=['GET', 'POST'] 옵션으로 요청 방식을 제한할 수도 있답니다.

 

다음 단계에서는 이 라우팅 구조를 직접 활용하여, 실습으로 "Hello, World!" 앱을 만들어볼 거예요! 😄

 

 

6. Hello, World! 앱 만들기 🚀

드디어 Flask 웹 애플리케이션을 직접 만들어볼 시간이에요! 지금까지 배운 내용을 바탕으로, 가장 기본적인 "Hello, World!" 메시지를 띄우는 웹 서비스를 구현해볼게요. 😄

👨‍💻 app.py 파일 작성

app.py라는 이름으로 아래 코드를 작성하세요.

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"

딱 5줄이면 끝!

@app.route("/")는 루트 경로를 의미하고,

hello() 함수는 브라우저에 Hello, World!를 보여주는 역할을 합니다.

🚀 실행해보기

# 환경 변수 설정 (macOS/Linux)
export FLASK_APP=app.py

# Windows
set FLASK_APP=app.py

# 실행
flask run

명령어를 입력하고 나면 아래처럼 개발 서버가 실행됩니다.

 * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)

웹 브라우저를 열고 http://localhost:5000에 접속해보세요.

짜잔~! "Hello, World!"라는 문구가 반겨줄 거예요. 🎉

🔁 기타 실행 팁

  • 포트를 바꾸고 싶을 땐 flask run -p 8080 처럼 -p 옵션을 사용해보세요.
  • --debug 옵션을 쓰면 코드 수정이 실시간 반영돼요!
  • 서버 종료는 CTRL + C

이제 여러분은 Flask 애플리케이션을 직접 만들고, 브라우저에서 요청을 처리해보는 과정을 경험하셨어요!

웹 개발의 첫 단추, 잘 꿰셨습니다. 👏

다음 단계부터는 이 구조를 바탕으로 템플릿, 폼, 데이터베이스 등 다양한 기능을 붙여나가게 될 거예요.

 

 

마무리 ✨

여기까지 따라오셨다면, Flask의 기본 개념과 개발 환경 설정부터 애플리케이션 실행까지 한 사이클을 완주하신 거예요. 🎉

단 몇 줄의 코드로 웹 서버를 만들고, 브라우저를 통해 직접 결과를 확인하는 그 짜릿한 경험, 어떠셨나요?

오늘 배운 내용은 앞으로 Flask를 이용한 웹 개발을 위한 아주 탄탄한 기초가 됩니다.

이후 템플릿을 연결하거나, 사용자 입력을 받고, 데이터를 저장하는 등 더 복잡한 기능으로 확장해 나가더라도,

모든 흐름의 뿌리는 이 기본적인 라우팅 → 뷰 함수 → 응답입니다.

 

이제 여러분도 "나, Flask 웹 앱 만들 수 있어!"라고 자신 있게 말할 수 있어요.

다음 글에서는 템플릿 엔진인 Jinja2를 통해 HTML을 다루고, 사용자 입력을 처리하는 방법도 하나씩 배워볼 예정입니다. 기대해주세요!

 

🙌 지금까지 수고 많으셨습니다.

실습을 꼭 따라해 보시고, 직접 오류도 만나보고 해결해 보는 과정이 가장 큰 공부가 됩니다!

반응형