Flask란?
Flask는 Python 기반의 마이크로 웹 프레임워크야. ‘마이크로’라고 해서 기능이 부족하다는 뜻은 아니고, 기본적으로 최소한의 핵심 기능만 제공하고 나머지는 확장해서 사용하도록 설계되었다는 의미야.
즉, 필요한 것만 선택해서 자유롭게 설계할 수 있는 가볍고 빠른 프레임워크야.
Flask의 특징
• 간단하고 직관적인 코드 구조
• 유연하고 커스터마이징이 쉬움
• 기본적으로는 라우팅과 템플릿 엔진만 제공
• ORM, 인증, 관리 도구는 직접 선택해서 사용
• 작고 빠르며 배우기 쉬움
• RESTful API 만들기에 적합
Django와 비교하면?
항목 |
Django |
Flask |
---|---|---|
철학 |
배터리 포함 (다 내장) |
최소한의 기능, 확장성 중심 |
구조 |
엄격하고 정형화된 구조 |
자유롭고 단순한 구조 |
사용 난이도 |
입문자도 쉽지만 초반 구조 복잡함 |
매우 간단하게 시작 가능 |
확장성 |
내장 기능으로 확장 가능 |
플러그인이나 외부 라이브러리 필요 |
API 제작 |
Django REST Framework 필요 |
기본 Flask로도 가능 |
Flask 기본 구조 예시
myflaskapp/
├── app.py
├── templates/
│ └── index.html
└── static/
└── style.css
Flask 예제 코드
1. 간단한 Flask 앱
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, Flask!'
if __name__ == '__main__':
app.run(debug=True)
2. 템플릿 사용
# app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', name='홍길동')
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Flask 예제</title>
</head>
<body>
<h1>안녕하세요, {{ name }}님!</h1>
</body>
</html>
3. 폼 데이터 받기 (POST 요청)
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
return f"안녕하세요, {username}님!"
return '''
<form method="post">
이름: <input type="text" name="username">
<input type="submit" value="확인">
</form>
'''
4. RESTful API 예제
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/data')
def get_data():
data = {'name': 'Alice', 'age': 30}
return jsonify(data)
자주 사용하는 Flask 확장 도구
확장명 |
기능 |
---|---|
Flask-SQLAlchemy |
ORM 기능 (데이터베이스 연동) |
Flask-WTF |
웹 폼 처리 |
Flask-Login |
로그인/세션 관리 |
Flask-Migrate |
DB 마이그레이션 |
Flask-RESTful |
RESTful API 쉽게 만들기 |
Flask-Mail |
이메일 전송 기능 |
Flask를 사용하기 좋은 경우
• 가볍고 빠르게 웹 서비스를 시작하고 싶은 경우
• 자신이 원하는 구조로 자유롭게 설계하고 싶은 경우
• REST API 서버를 개발하고 싶은 경우
• Django는 너무 무겁다고 느껴질 때
원한다면 다음 중 하나를 더 깊게 파고들 수도 있어:
• Flask로 CRUD 웹 앱 만들기
• Flask + SQLAlchemy로 DB 다루기
• Flask RESTful API + JWT 로그인 구현
• Flask 배포 (Heroku, Docker 등)
궁금한 주제 있으면 편하게 말해줘.