Flask 기반 웹 애플리케이션 개발 시작하기

기초부터 시작하는 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는 단순하면서도 확장 가능한 웹 개발 플랫폼입니다. 기본적인 라우팅, 템플릿, 정적 파일 처리와 함께, 데이터베이스, 인증, 폼 처리 등의 기능은 다양한 확장 패키지를 통해 손쉽게 추가할 수 있습니다. 본 문서를 바탕으로 실습하며 실제 웹 애플리케이션을 구축해 보세요.

태그: flask python 웹개발 Jinja2 WSGI

7월 13일 17:24에 게시됨