Flask는 가벼우면서도 유연한 웹 애플리케이션 프레임워크로, 다양한 확장 기능을 통해 기능을 확장할 수 있습니다. 이번 포스트에서는 Flask에서 인기 있는 확장 기능 몇 가지를 살펴보고 활용하는 방법을 알아보겠습니다.
Table of Contents
- Flask-RESTful을 활용한 RESTful API 개발
- Flask-SQLAlchemy를 사용한 데이터베이스 관리
- Flask-WTF로 간단하게 웹 폼 구현
- 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 확장 목록 을 확인해보세요!