[파이썬] Flask로 전자상거래 웹사이트 만들기

Flask는 파이썬 웹 프레임워크로, 간단하고 유연한 구조를 가지고 있어 전자상거래 웹사이트를 개발하는 데에 적합합니다. 이번 포스트에서는 Flask를 사용하여 전자상거래 웹사이트를 만드는 방법에 대해 알아보겠습니다.

필수 요소 설치

전자상거래 웹사이트를 개발하기 위해 필요한 몇 가지 Flask 확장 프로그램과 라이브러리를 설치해야 합니다. 가상 환경에서 작업하는 것을 권장하며, 다음 명령어를 사용하여 필수 요소들을 설치할 수 있습니다:

$ pip install flask
$ pip install flask-wtf
$ pip install flask-login
$ pip install flask-mail

데이터베이스 모델링

전자상거래 웹사이트를 구성하는 주요 부분 중 하나는 데이터베이스입니다. SQLite나 PostgreSQL 등의 데이터베이스를 사용할 수 있습니다. Flask는 SQLAlchemy와 함께 사용되며, 다음과 같이 모델 클래스를 생성할 수 있습니다:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

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

class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    price = db.Column(db.Float, nullable=False)
    description = db.Column(db.Text, nullable=False)
    ...

사용자 인증 시스템

전자상거래 웹사이트에는 사용자 인증 및 인가 시스템이 필요합니다. Flask-Login 확장 프로그램을 사용하여 사용자 인증을 구현할 수 있습니다. 다음은 간단한 인증 시스템의 예입니다:

from flask_login import UserMixin

class User(UserMixin, db.Model):
    ...

상품 목록 및 상세 정보 페이지

전자상거래 웹사이트의 핵심 기능 중 하나는 상품 목록을 보여주는 페이지와 상세 정보 페이지입니다. Flask의 라우팅을 사용하여 다음과 같이 구현할 수 있습니다:

@app.route('/products')
def products():
    # 상품 목록 로직 구현
    return render_template('products.html', products=products)

@app.route('/product/<int:product_id>')
def product_detail(product_id):
    # 상품 상세 정보 로직 구현
    return render_template('product_detail.html', product=product)

장바구니 기능

전자상거래 웹사이트에는 사용자가 상품을 장바구니에 담을 수 있는 기능이 필요합니다. Flask의 세션을 사용하여 장바구니 기능을 구현할 수 있습니다:

@app.route('/add_to_cart/<int:product_id>')
def add_to_cart(product_id):
    if 'cart' not in session:
        session['cart'] = []
    session['cart'].append(product_id)
    return redirect(url_for('cart'))

@app.route('/cart')
def cart():
    products = []
    if 'cart' in session:
        product_ids = session['cart']
        products = Product.query.filter(Product.id.in_(product_ids)).all()
    return render_template('cart.html', products=products)

결제 기능

마지막으로, 전자상거래 웹사이트에는 결제 기능이 필요합니다. Stripe와 같은 결제 게이트웨이를 사용할 수 있으며, 이를 Flask와 통합하면 결제 기능을 구현할 수 있습니다.

@app.route('/checkout', methods=['POST'])
def checkout():
    # 결제 로직 구현
    return redirect(url_for('thank_you'))

@app.route('/thank_you')
def thank_you():
    return render_template('thank_you.html')

결론

이것은 Flask로 전자상거래 웹사이트를 만들기 위한 기본 개요입니다. Flask는 간단한 구조와 다양한 확장 기능을 제공하여 웹사이트 개발을 쉽게 만들어주는 강력한 도구입니다. Flask를 사용하여 전자상거래 웹사이트를 만들어 보는 것을 추천합니다.