[python] Flask에서 인기 있는 확장 기능 활용하기

Flask는 가벼우면서도 유연한 웹 애플리케이션 프레임워크로, 다양한 확장 기능을 통해 기능을 확장할 수 있습니다. 이번 포스트에서는 Flask에서 인기 있는 확장 기능 몇 가지를 살펴보고 활용하는 방법을 알아보겠습니다.

Table of Contents

  1. Flask-RESTful을 활용한 RESTful API 개발
  2. Flask-SQLAlchemy를 사용한 데이터베이스 관리
  3. Flask-WTF로 간단하게 웹 폼 구현
  4. Flask-Login으로 사용자 인증 관리

1. Flask-RESTful을 활용한 RESTful API 개발

Flask-RESTful은 Flask 애플리케이션에서 쉽게 RESTful API를 구축할 수 있게 해주는 확장 기능입니다. 간단한 데코레이터를 사용하여 리소스와 메서드를 정의하고, Flask-RESTful이 요청을 처리하여 JSON 응답을 생성해줍니다.

예제:

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
    app.run()

2. Flask-SQLAlchemy를 사용한 데이터베이스 관리

Flask-SQLAlchemy는 Flask 애플리케이션에서 SQLAlchemy를 쉽게 사용할 수 있게 해주는 확장 기능입니다. ORM을 통해 데이터베이스 모델을 정의하고 쿼리를 수행할 수 있으며, 데이터베이스 스키마를 쉽게 관리할 수 있습니다.

예제:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

if __name__ == '__main__':
    app.run()

3. Flask-WTF로 간단하게 웹 폼 구현

Flask-WTF는 Flask 애플리케이션에서 웹 폼을 쉽게 만들고 유효성을 검사할 수 있게 해주는 확장 기능입니다. 웹 폼을 정의하고 렌더링하는 것을 간단하게 처리할 수 있으며, CSRF 보호 및 사용자 입력 유효성 검사를 제공합니다.

예제:

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        return 'Success'
    return render_template('index.html', form=form)

if __name__ == '__main__':
    app.run()

4. Flask-Login으로 사용자 인증 관리

Flask-Login은 Flask 애플리케이션에서 사용자 로그인 및 세션 관리를 쉽게 할 수 있게 해주는 확장 기능입니다. 사용자 인증, 로그인 기억, 로그아웃 등을 쉽게 처리할 수 있으며, 사용자 세션 정보를 안전하게 관리합니다.

예제:

from flask import Flask, redirect, url_for
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

app = Flask(__name__)
app.secret_key = 'secret_key'
login_manager = LoginManager(app)

class User(UserMixin):
    def __init__(self, id):
        self.id = id

@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route('/login/<int:user_id>')
def login(user_id):
    user = User(user_id)
    login_user(user)
    return 'Logged in'

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return 'Logged out'

if __name__ == '__main__':
    app.run()

위에서 소개한 확장 기능들은 Flask 애플리케이션을 보다 강력하고 유연하게 만들어 주며, 개발 생산성과 품질을 높일 수 있습니다.

더 많은 확장 기능을 찾아보고 싶다면, Flask 확장 목록 을 확인해보세요!