IMG-LOGO
공지사항 :

Python Flask

lmkfox - 2025-04-09 07:09:29 72 Views 0 Comment

Flask란?

FlaskPython 기반의 마이크로 웹 프레임워크야. ‘마이크로’라고 해서 기능이 부족하다는 뜻은 아니고, 기본적으로 최소한의 핵심 기능만 제공하고 나머지는 확장해서 사용하도록 설계되었다는 의미야.

즉, 필요한 것만 선택해서 자유롭게 설계할 수 있는 가볍고 빠른 프레임워크야.


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 등)

궁금한 주제 있으면 편하게 말해줘.


댓글