Flask는 Python 기반의 경량 웹 프레임워크로, 빠르고 간편하게 웹 애플리케이션을 개발할 수 있습니다. 2024년 현재, Flask는 스타트업부터 대기업까지 폭넓게 사용되며, 백엔드 개발을 배우려는 초보자들에게도 인기 있는 선택지입니다. 이 글에서는 Flask의 기본 개념부터 실전 프로젝트까지 단계별로 알아보고, 쉽고 빠르게 웹 애플리케이션을 개발하는 방법을 소개합니다.
Flask란 무엇인가?
Flask는 마이크로 프레임워크(Micro Framework)로 분류되며, 기본적으로 최소한의 기능만 제공하는 웹 프레임워크입니다. Django와 같은 풀스택 프레임워크와 달리, 필요한 기능을 선택적으로 추가할 수 있어 유연한 개발이 가능합니다.
Flask의 주요 특징
- 가벼운 구조: 기본적으로 최소한의 기능만 제공하여 가볍고 빠른 웹 애플리케이션 개발 가능
- 확장성: 다양한 플러그인 및 확장 모듈을 활용하여 원하는 기능 추가 가능
- 쉬운 학습 곡선: Python을 알고 있다면 빠르게 익힐 수 있으며, 코드 작성이 간단함
- Jinja2 템플릿 엔진 지원: HTML, CSS, JavaScript와 쉽게 연동 가능
- RESTful API 개발 용이: JSON 응답 처리와 API 서버 구축에 적합
Flask 기본 사용법
Flask를 사용하기 위해서는 Python 환경이 필요합니다. 아래 단계에 따라 Flask 개발을 시작해보겠습니다.
Flask 설치하기
# 가상 환경 생성 및 활성화 (Windows)
python -m venv venv
venv\Scripts\activate
# 가상 환경 생성 및 활성화 (Mac/Linux)
python3 -m venv venv
source venv/bin/activate
# Flask 설치
pip install flask
Flask 기본 코드 작성
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
Flask 실행하기
python app.py
위 코드를 실행한 후 브라우저에서 http://127.0.0.1:5000
에 접속하면 "Hello, Flask!"라는 문장이 출력됩니다.
Flask 실전 프로젝트 만들기
이제 간단한 CRUD(Create, Read, Update, Delete) 기능을 가진 웹 애플리케이션을 만들어보겠습니다. 이를 위해 Jinja2 템플릿 엔진과 SQLite 데이터베이스를 활용합니다.
템플릿 엔진 활용
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html', title="Flask 웹 페이지")
if __name__ == '__main__':
app.run(debug=True)
템플릿 파일 생성
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>Flask 웹 개발 시작하기</h1>
<p>Flask를 활용하여 동적인 웹 페이지를 만들어 보세요!</p>
</body>
</html>
SQLite 데이터베이스 연동
Flask에서는 sqlite3
모듈을 활용하여 간단한 데이터베이스를 구현할 수 있습니다.
데이터베이스 생성
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
)
''')
conn.commit()
conn.close()
데이터 추가 및 조회
from flask import Flask, render_template, request, g
import sqlite3
app = Flask(__name__)
DATABASE = 'database.db'
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
return db
@app.route('/')
def home():
db = get_db()
cursor = db.cursor()
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
return render_template('index.html', users=users)
@app.route('/add', methods=['POST'])
def add_user():
name = request.form['name']
email = request.form['email']
db = get_db()
cursor = db.cursor()
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", (name, email))
db.commit()
return "사용자가 추가되었습니다!"
if __name__ == '__main__':
app.run(debug=True)
결론
Flask는 가볍고 유연한 웹 프레임워크로, 초보자부터 숙련된 개발자까지 다양한 프로젝트에 활용할 수 있습니다. 본 글에서는 Flask의 기본 개념부터 실전 프로젝트까지 단계별로 설명했습니다.
Flask의 강점은 간결한 코드, 빠른 개발 속도, 쉬운 유지보수입니다. Django처럼 강력한 기능을 제공하지는 않지만, 필요에 따라 확장할 수 있어 유용합니다.
앞으로 Flask를 활용하여 REST API 개발, 사용자 인증 시스템, 대규모 웹 애플리케이션까지 도전해 보세요!