기초부터 시작하는 Flask 웹 프레임워크 활용법
Flask는 파이썬 기반의 경량 웹 개발 프레임워크로, 모듈성과 유연성을 갖춘 미니멀한 설계를 특징으로 합니다. 내부적으로 Werkzeug(WSGI 툴킷)와 Jinja2 템플릿 엔진을 기반으로 하며, 필요에 따라 다양한 확장 기능을 쉽게 통합할 수 있습니다. 이 문서에서는 간단한 예제를 통해 Flask를 어떻게 설정하고 사용하는지 단계별로 설명합니다.
1. 환경 준비 및 설치
Python과 pip가 설치된 상태에서 다음 명령어로 Flask를 설치하세요:
pip install Flask
2. 최소한의 애플리케이션 생성
새로운 폴더를 만들고 `app.py` 파일을 생성합니다:
mkdir my_web_app
cd my_web_app
touch app.py
이후 `app.py`에 아래 코드를 작성합니다:
from flask import Flask
web_app = Flask(__name__)
@web_app.route('/')
def welcome_message():
return '<h1>안녕하세요, 세상!</h1>'
if __name__ == '__main__':
web_app.run(debug=True)
터미널에서 애플리케이션을 실행하고 브라우저에서 http://127.0.0.1:5000에 접속하면 기본 메시지가 표시됩니다.
3. URL 매핑 및 동적 경로 처리
특정 경로에 대한 요청을 처리하려면 라우팅을 정의합니다. 변수를 포함한 경로도 가능합니다:
@web_app.route('/profile/<username>')
def show_profile(username):
return f'사용자: {username}의 프로필 페이지'
또한 특정 데이터 타입을 지정하여 유효성 검사를 강화할 수 있습니다:
@web_app.route('/article/')
def view_article(article_id):
return f'기사 번호: {article_id}'
4. HTTP 요청 방식 제어
GET 외에도 POST, PUT 등의 메서드를 지원합니다. 다음은 두 가지 방법을 모두 처리하는 예제입니다:
from flask import request
@web_app.route('/submit', methods=['GET', 'POST'])
def handle_submission():
if request.method == 'POST':
data = request.form['content']
return f'전송된 내용: {data}'
else:
return '<form method="post"><input type="text" name="content"><button type="submit">보내기</button></form>'
5. HTML 템플릿 사용하기
HTML 파일을 관리하기 위해 `templates` 폴더를 생성하고, `index.html` 파일을 만듭니다:
mkdir templates
touch templates/index.html
템플릿 파일에는 다음과 같은 구조를 사용합니다:
<!DOCTYPE html>
<html>
<head>
<title>메인 페이지</title>
</head>
<body>
<h1>환영합니다!</h1>
</body>
</html>
뷰 함수에서 템플릿을 렌더링하려면 `render_template` 함수를 사용합니다:
from flask import render_template
@web_app.route('/')
def index():
return render_template('index.html')
6. 정적 파일 관리
CSS, 자바스크립트, 이미지 등 정적 리소스는 `static` 폴더에 저장합니다:
mkdir static
touch static/main.css
예시로 `static/main.css` 파일에 스타일을 추가합니다:
body {
font-family: Arial, sans-serif;
background-color: #f0f8ff;
}
템플릿에서 정적 파일을 참조할 때는 `url_for` 함수를 사용합니다:
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}">
7. 확장 기능 활용
데이터베이스 연동을 위해 Flask-SQLAlchemy를 설치하고 사용해 보세요:
pip install Flask-SQLAlchemy
애플리케이션 설정에 데이터베이스 경로를 추가하고 모델을 정의합니다:
from flask_sqlalchemy import SQLAlchemy
web_app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
db = SQLAlchemy(web_app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(100), unique=True, nullable=False)
# 데이터베이스 초기화
with web_app.app_context():
db.create_all()
8. 요약
Flask는 단순하면서도 확장 가능한 웹 개발 플랫폼입니다. 기본적인 라우팅, 템플릿, 정적 파일 처리와 함께, 데이터베이스, 인증, 폼 처리 등의 기능은 다양한 확장 패키지를 통해 손쉽게 추가할 수 있습니다. 본 문서를 바탕으로 실습하며 실제 웹 애플리케이션을 구축해 보세요.