다다의 개발일지 6v6

Flask - Python으로 만든 가벼운 웹 프레임워크 본문

Backend/Python

Flask - Python으로 만든 가벼운 웹 프레임워크

dev6v6 2025. 2. 24. 17:30

Flask란?

Flask는 Python으로 만든 경량 웹 프레임워크이다. ->  웹 애플리케이션을 만들 수 있도록 도와주는 도구.

Django처럼 대형 프레임워크가 아니라, 필요한 기능을 선택적으로 추가할 수 있는 간단한 웹 프레임워크이다.

 

Flask의 특징

  1. 경량(minimal)하고 유연함
    • Flask는 기본적으로 가벼운 구조를 가지고 있어서, 필요한 기능만 추가해서 사용.
    • 핵심 기능만 포함하고 있고, 필요하면 추가 패키지를 설치해서 확장할 수 있음.
  2. 빠르고 간단함
    • 코드가 간결해서 초보자도 쉽게 배울 수 있다.
    • 웹 애플리케이션을 빠르게 개발할 수 있는 구조를 제공.
  3. Jinja2 템플릿 엔진 제공
    • HTML 코드 안에 {{ 변수 }} 같은 문법을 넣어서 동적인 웹 페이지를 만들 수 있음.
  4. WSGI 기반 & Werkzeug 사용
    • WSGI(Web Server Gateway Interface) 기반으로 만들어져 있어서 다양한 웹 서버에서 실행 가능.
    • 내부적으로 Werkzeug라는 라이브러리를 사용해서 요청과 응답을 관리.
  5. REST API 개발에 적합
    • Flask는 JSON 응답을 쉽게 만들 수 있어서, 백엔드 API 개발에 많이 사용된다.
    • fetch, axios 같은 JavaScript 라이브러리와 함께 클라이언트-서버 통신할 때 유용함.

 

Flask 기본 코드 예제

아래는 Flask를 이용해서 간단한 웹 서버를 만드는 코드.

1️⃣ Flask 설치

pip install flask

2️⃣ 간단한 웹 애플리케이션 만들기

from flask import Flask

app = Flask(__name__)  # Flask 객체 생성

@app.route('/')  # 루트 URL ('/')에 대한 라우트 설정
def home():
    return "Hello, Flask!"  # 브라우저에서 확인할 메시지

if __name__ == '__main__':
    app.run(debug=True)  # 서버 실행 (디버그 모드 활성화)

 

실행 방법
위 코드를 app.py로 저장한 후, 터미널에서 실행하면 됨.

python app.py

브라우저에서 http://127.0.0.1:5000/ 에 접속하면 "Hello, Flask!" 메시지를 확인할 수 있음

 

Flask에서 중요한 개념

1️⃣ 라우팅 (Routing)

  • 특정 URL을 요청하면, 어떤 함수를 실행할지 정하는 역할.
  • 위 코드에서 @app.route('/')는 사용자가 루트 URL에 접속했을 때 실행될 함수를 지정함.
@app.route('/about')
def about():
    return "About Page"

 

 /about에 접속하면 "About Page"가 출력됨.

2️⃣ 동적 라우팅

  • URL에 변수를 넣어서 동적으로 데이터를 전달할 수도 있음.
@app.route('/user/<username>')
def show_user(username):
    return f"Hello, {username}!"

 

http://127.0.0.1:5000/user/Alice 로 접속하면 "Hello, Alice!" 출력됨.

3️⃣ HTML 템플릿 사용

Flask는 Jinja2 템플릿 엔진을 제공해서, 동적인 HTML을 만들 수 있다.

 

📌 템플릿 파일 생성 (templates/index.html)

<!DOCTYPE html>
<html>
<head>
    <title>Flask Page</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

 

📌 Flask에서 템플릿 렌더링

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/hello/<name>')
def hello(name):
    return render_template('index.html', name=name)  # HTML 파일에 변수 전달

if __name__ == '__main__':
    app.run(debug=True)

 /hello/Alice로 접속하면 "Hello, Alice!"가 웹페이지에 표시됨.

4️⃣ JSON 데이터 응답 (REST API)

Flask는 REST API 개발에도 많이 쓰인다.

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/data')
def get_data():
    data = {"name": "Alice", "age": 25}
    return jsonify(data)  # JSON 응답 반환

if __name__ == '__main__':
    app.run(debug=True)

 /api/data에 접속하면 다음과 같은 JSON 데이터가 반환됨:

{
    "name": "Alice",
    "age": 25
}

 fetch()나 axios.get('/api/data')로 클라이언트에서 가져올 수 있음.

 

Flask vs Django

  Flask Django
철학 가볍고 유연한 마이크로 프레임워크 기능이 많은 대형 프레임워크
구성 요소 필요한 기능만 추가해서 사용 ORM, 관리자 페이지 등 기본 기능 포함
템플릿 엔진 Jinja2 사용 Django Template Language 사용
REST API 가볍고 빠르게 만들 수 있음 Django REST Framework(DRF) 필요
적합한 프로젝트 작은 프로젝트, API 서버 대형 웹 서비스, 복잡한 데이터 모델

 

Flask는 작은 규모의 프로젝트나 API 개발에 적합하고, Django는 대규모 웹 애플리케이션에 적합하다.

 

Flask로 할 수 있는 것

  • 간단한 웹사이트 제작
  • REST API 개발 (백엔드 서버 역할)
  • IoT, 데이터 시각화, 머신러닝 모델 배포 등 다양한 분야에서 사용 가능