ساخت سیستم سبد خرید با پایتون و Flask

ساخت سیستم سبد خرید با پایتون و Flask

در این مقاله، به آموزش ساخت یک سیستم سبد خرید ساده اما کاربردی با استفاده از زبان برنامه‌نویسی پایتون و فریم‌ورک وب Flask خواهیم پرداخت. این آموزش برای توسعه‌دهندگان وب که به دنبال یادگیری توسعه وب با پایتون هستند، بسیار مفید خواهد بود. ما مراحل مختلف را از طراحی پایگاه داده تا پیاده‌سازی رابط کاربری و منطق سبد خرید پوشش خواهیم داد.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:

  • پایتون (نسخه 3.6 یا بالاتر)
  • Flask
  • یک ویرایشگر کد (مانند VS Code، PyCharm یا Sublime Text)
  • آشنایی اولیه با HTML، CSS و پایتون

برای نصب Flask، از دستور زیر در ترمینال خود استفاده کنید:

pip install Flask

مرحله 1: طراحی پایگاه داده

برای ذخیره اطلاعات محصولات و سبد خرید، به یک پایگاه داده نیاز داریم. در این آموزش، از SQLite استفاده خواهیم کرد که یک پایگاه داده سبک و فایل‌محور است. ساختار پایگاه داده ما شامل دو جدول خواهد بود:

  • Products: شامل اطلاعات محصولات (id, name, price, description)
  • Cart: شامل اطلاعات سبد خرید (id, user_id, product_id, quantity)

می‌توانید این جداول را با استفاده از کد پایتون زیر ایجاد کنید:

import sqlite3

conn = sqlite3.connect('shop.db')
cursor = conn.cursor()

cursor.execute('''
    CREATE TABLE IF NOT EXISTS Products (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        price REAL NOT NULL,
        description TEXT
    )
''')

cursor.execute('''
    CREATE TABLE IF NOT EXISTS Cart (
        id INTEGER PRIMARY KEY,
        user_id INTEGER NOT NULL,
        product_id INTEGER NOT NULL,
        quantity INTEGER NOT NULL
    )
''')

conn.commit()
conn.close()

مرحله 2: ایجاد برنامه Flask

اکنون، یک برنامه Flask ایجاد می‌کنیم که شامل مسیرها (routes) برای نمایش محصولات، افزودن محصول به سبد خرید، نمایش سبد خرید و حذف محصول از سبد خرید خواهد بود.

from flask import Flask, render_template, request, redirect, url_for
import sqlite3

app = Flask(__name__)

def get_db_connection():
    conn = sqlite3.connect('shop.db')
    conn.row_factory = sqlite3.Row
    return conn

@app.route('/')
def index():
    conn = get_db_connection()
    products = conn.execute('SELECT * FROM Products').fetchall()
    conn.close()
    return render_template('index.html', products=products)

@app.route('/add_to_cart', methods=['POST'])
def add_to_cart():
    product_id = request.form['product_id']
    quantity = int(request.form['quantity'])
    user_id = 1  # فرض می‌کنیم فقط یک کاربر داریم

    conn = get_db_connection()
    cursor = conn.cursor()
    cursor.execute('INSERT INTO Cart (user_id, product_id, quantity) VALUES (?, ?, ?)',
                   (user_id, product_id, quantity))
    conn.commit()
    conn.close()

    return redirect(url_for('index'))

@app.route('/cart')
def cart():
    conn = get_db_connection()
    user_id = 1
    cart_items = conn.execute('SELECT p.name, p.price, c.quantity FROM Cart c JOIN Products p ON c.product_id = p.id WHERE c.user_id = ?', (user_id,)).fetchall()
    conn.close()
    return render_template('cart.html', cart_items=cart_items)

@app.route('/remove_from_cart', methods=['POST'])
def remove_from_cart():
    item_id = request.form['item_id']

    conn = get_db_connection()
    cursor = conn.cursor()
    cursor.execute('DELETE FROM Cart WHERE id = ?', (item_id,))
    conn.commit()
    conn.close()

    return redirect(url_for('cart'))

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

مرحله 3: ایجاد فایل‌های HTML

اکنون، فایل‌های HTML مورد نیاز برای رابط کاربری را ایجاد می‌کنیم. این فایل‌ها شامل صفحه‌ای برای نمایش محصولات (index.html) و صفحه‌ای برای نمایش سبد خرید (cart.html) خواهند بود.

index.html

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>فروشگاه</title>
</head>
<body>
    <h1>محصولات</h1>
    <ul>
        {% for product in products %}
            <li>
                <p>{{ product['name'] }} - {{ product['price'] }}</p>
                <p>{{ product['description'] }}</p>
                <form action="{{ url_for('add_to_cart') }}" method="post">
                    <input type="hidden" name="product_id" value="{{ product['id'] }}">
                    <label for="quantity">تعداد:</label>
                    <input type="number" id="quantity" name="quantity" value="1" min="1">
                    <button type="submit">افزودن به سبد خرید</button>
                </form>
            </li>
        {% endfor %}
    </ul>
    <a href="{{ url_for('cart') }}">مشاهده سبد خرید</a>
</body>
</html>

cart.html

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>سبد خرید</title>
</head>
<body>
    <h1>سبد خرید</h1>
    <ul>
        {% for item in cart_items %}
            <li>
                <p>{{ item['name'] }} - {{ item['price'] }} * {{ item['quantity'] }} = {{ item['price'] * item['quantity'] }}</p>
                <form action="{{ url_for('remove_from_cart') }}" method="post">
                    <input type="hidden" name="item_id" value="{{ item['id'] }}">
                    <button type="submit">حذف از سبد خرید</button>
                </form>
            </li>
        {% endfor %}
    </ul>
    <a href="{{ url_for('index') }}">ادامه خرید</a>
</body>
</html>

مرحله 4: افزودن داده‌های نمونه

برای تست سیستم سبد خرید، باید چند محصول نمونه به پایگاه داده اضافه کنیم. می‌توانید این کار را با استفاده از کد پایتون زیر انجام دهید:

import sqlite3

conn = sqlite3.connect('shop.db')
cursor = conn.cursor()

cursor.execute('INSERT INTO Products (name, price, description) VALUES (?, ?, ?)',
               ('لپ‌تاپ', 1200.00, 'یک لپ‌تاپ قدرتمند برای کارهای روزمره و حرفه‌ای'))
cursor.execute('INSERT INTO Products (name, price, description) VALUES (?, ?, ?)',
               ('موس بی‌سیم', 50.00, 'یک موس بی‌سیم راحت و دقیق'))
cursor.execute('INSERT INTO Products (name, price, description) VALUES (?, ?, ?)',
               ('صفحه کلید', 80.00, 'یک صفحه کلید با کیفیت برای تایپ آسان'))

conn.commit()
conn.close()

اجرای برنامه

پس از انجام مراحل بالا، می‌توانید برنامه Flask را اجرا کنید. در ترمینال، به دایرکتوری حاوی فایل‌های پایتون و HTML بروید و دستور زیر را اجرا کنید:

python your_app_name.py

سپس، می‌توانید به آدرس http://127.0.0.1:5000/ در مرورگر خود بروید تا فروشگاه را مشاهده کنید.

نتیجه‌گیری

در این مقاله، یک سیستم سبد خرید ساده با استفاده از پایتون و Flask ایجاد کردیم. این سیستم شامل نمایش محصولات، افزودن محصول به سبد خرید، نمایش سبد خرید و حذف محصول از سبد خرید بود. این آموزش می‌تواند به عنوان یک نقطه شروع برای ساخت سیستم‌های سبد خرید پیچیده‌تر با ویژگی‌های بیشتر مورد استفاده قرار گیرد.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *