728x90

Flask는 Python 기반의 웹 프레임워크로, 최소한의 코드로도 웹 애플리케이션을 빠르게 개발할 수 있도록 설계된 마이크로 프레임워크입니다. Django에 비해 기능은 작지만, 높은 유연성과 확장성을 갖고 있어 초보자뿐만 아니라 고급 개발자에게도 많은 사랑을 받고 있습니다.
1. Flask란 무엇인가?
Flask는 Werkzeug WSGI 툴킷과 Jinja2 템플릿 엔진을 기반으로 만들어진 경량 웹 프레임워크입니다. 플러그인 형태로 다양한 기능을 자유롭게 선택할 수 있어, 필요한 것만 구축하고 싶은 개발자에게 최적화된 선택입니다.
설치 방법
pip install flask
기본 앱 구조
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
2. Flask의 주요 기능 정리
| 기능 | 설명 | 비고 |
|---|---|---|
| 라우팅 | URL 경로 설정 및 처리 | @app.route() 사용 |
| 템플릿 렌더링 | HTML과 변수 동적 연결 | Jinja2 엔진 기반 |
| 요청 처리 | GET, POST 등 HTTP 메서드 대응 | request 객체 사용 |
| 세션 관리 | 사용자 상태 추적 | session 객체로 구현 |
| REST API 구축 | 간단한 API 서버 구현 가능 | Flask-RESTful 사용 가능 |
3. 템플릿 시스템: Jinja2
Flask는 Jinja2 템플릿 엔진을 사용하여 HTML 내에서 Python 변수를 사용할 수 있습니다.
템플릿 예제
<h1>안녕하세요, {{ name }}님!</h1>
렌더링 코드
from flask import render_template
@app.route('/hello/<name>')
def hello(name):
return render_template('hello.html', name=name)
4. 요청 데이터 처리
폼 데이터, URL 파라미터, JSON 요청 등 다양한 요청을 처리할 수 있습니다.
from flask import request
@app.route('/form', methods=['POST'])
def handle_form():
username = request.form['username']
return f"입력한 이름: {username}"
5. 실전 예제: 간단한 메모장 앱
from flask import Flask, request, render_template
app = Flask(__name__)
notes = []
@app.route('/')
def index():
return render_template('index.html', notes=notes)
@app.route('/add', methods=['POST'])
def add_note():
note = request.form['note']
notes.append(note)
return render_template('index.html', notes=notes)
템플릿 파일 (templates/index.html)
<form action="/add" method="POST">
<input type="text" name="note">
<input type="submit" value="추가">
</form>
<ul>
{% for n in notes %}
<li>{{ n }}</li>
{% endfor %}
</ul>
6. Flask vs Django 비교
| 항목 | Flask | Django |
|---|---|---|
| 개발 철학 | 마이크로, 유연성 강조 | 풀패키지, 일관성 강조 |
| 초기 설정 | 간단하고 빠름 | 다소 복잡함 |
| 학습 곡선 | 낮음 (초보자 친화적) | 중간 이상 |
| 기능 확장 | 외부 확장에 의존 | 기본 내장 많음 |
| 프로젝트 크기 | 소형~중형 | 중형~대형 |
7. Flask 주요 확장 모듈
- Flask-SQLAlchemy: ORM 지원
- Flask-WTF: 폼 및 검증
- Flask-Login: 사용자 인증
- Flask-RESTful: API 구축
- Flask-Migrate: 데이터베이스 마이그레이션
8. Flask의 장점과 단점
| 구분 | 장점 | 단점 |
|---|---|---|
| 개발 속도 | 빠른 프로토타입 제작 | 구조 설계가 개발자 책임 |
| 확장성 | 필요한 라이브러리만 사용 가능 | 기본 기능이 적어 처음엔 불편 |
| 학습 | 입문자에게 적합 | 프로젝트 커질수록 구조 설계 중요 |
9. 결론
Flask는 단순한 웹 앱부터 RESTful API 서버까지 다양한 프로젝트에 적합한 가볍고 유연한 프레임워크입니다. 특히 빠른 프로토타이핑, 학습용 프로젝트, 마이크로서비스 등에서 탁월한 성능을 발휘합니다. 구조에 대한 자유도가 높은 만큼 개발자의 판단과 설계 역량이 중요하며, 잘만 활용하면 Django 못지않은 강력한 웹 서비스를 만들 수 있습니다.
참고 자료
- Flask 공식 문서: https://flask.palletsprojects.com/
- Real Python - Flask Guide
- Microblog 튜토리얼 by Miguel Grinberg
728x90
'Artificial Intelligence > 60. Python' 카테고리의 다른 글
| [PYTHON] 머신러닝 입문부터 실전까지: 파이썬으로 배우는 스마트 예측 기술 (0) | 2025.07.20 |
|---|---|
| [PYTHON] 데이터 분석 완벽 가이드 : 파이썬으로 실무형 분석 프로젝트 시작하기 (0) | 2025.07.20 |
| [PYTHON] Django 완벽 가이드 : 파이썬 웹 개발의 정석 (0) | 2025.07.20 |
| [PYTHON] Matplotlib 완벽 가이드 : 파이썬 시각화의 시작과 끝 (0) | 2025.07.20 |
| [PYTHON] Pandas 완벽 가이드 : 데이터 분석의 핵심 도구 (0) | 2025.07.20 |