ساخت سیستم مدیریت سفارش با پایتون و فریم‌ورک Flask

ساخت سیستم مدیریت سفارش با پایتون و فریم‌ورک Flask

در این مقاله، به آموزش ساخت یک سیستم مدیریت سفارش (Order Management System – OMS) ساده با استفاده از زبان برنامه‌نویسی پایتون و فریم‌ورک وب Flask خواهیم پرداخت. این سیستم به شما امکان می‌دهد تا سفارشات را ثبت، ویرایش، حذف و مشاهده کنید. هدف از این آموزش، آشنایی با مفاهیم توسعه وب با پایتون و کاربرد عملی آن‌ها در یک پروژه واقعی است. این آموزش برای افرادی که با اصول برنامه‌نویسی پایتون آشنایی دارند و می‌خواهند وارد دنیای توسعه وب شوند، مناسب است.

پیش‌نیازها

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

  • پایتون (نسخه 3.6 یا بالاتر)
  • مدیریت بسته پایتون (pip)
  • Flask: برای نصب، از دستور pip install Flask استفاده کنید.
  • SQLite: معمولاً به صورت پیش‌فرض در پایتون نصب است، اما در صورت نیاز می‌توانید آن را نصب کنید.

طراحی پایگاه داده

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

جدول Orders:

  • id (INTEGER PRIMARY KEY AUTOINCREMENT): شناسه یکتا برای هر سفارش
  • customer_name (TEXT): نام مشتری
  • order_date (TEXT): تاریخ سفارش
  • total_amount (REAL): مبلغ کل سفارش
  • status (TEXT): وضعیت سفارش (مثلاً ‘در حال پردازش’، ‘ارسال شده’، ‘تکمیل شده’)

ایجاد ساختار پروژه

ساختار پروژه به صورت زیر خواهد بود:

order_management_system/
├── app.py
├── database.db
└── templates/
    ├── index.html
    ├── order_form.html
    ├── order_list.html
    └── order_detail.html

app.py: فایل اصلی برنامه Flask که منطق برنامه را در خود جای می‌دهد.

database.db: فایل پایگاه داده SQLite.

templates/: پوشه‌ای که فایل‌های HTML (قالب‌ها) را در خود نگه می‌دارد.

پیاده‌سازی برنامه Flask (app.py)

ابتدا، فایل app.py را ایجاد کنید و کد زیر را در آن قرار دهید:


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

app = Flask(__name__)
DATABASE = 'database.db'

def get_db_connection():
conn = sqlite3.connect(DATABASE)
conn.row_factory = sqlite3.Row
return conn

def init_db():
conn = get_db_connection()
with open('schema.sql', mode='r') as f:
conn.cursor().executescript(f.read())
conn.commit()
conn.close()

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

@app.route('/orders')
def order_list():
conn = get_db_connection()
orders = conn.execute('SELECT * FROM Orders').fetchall()
conn.close()
return render_template('order_list.html', orders=orders)

@app.route('/orders/new', methods=['GET', 'POST'])
def new_order():
if request.method == 'POST':
customer_name = request.form['customer_name']
order_date = request.form['order_date']
total_amount = request.form['total_amount']
status = request.form['status']

conn = get_db_connection()
conn.execute('INSERT INTO Orders (customer_name, order_date, total_amount, status) VALUES (?, ?, ?, ?)',
(customer_name, order_date, total_amount, status))
conn.commit()
conn.close()
return redirect(url_for('order_list'))
return render_template('order_form.html')

@app.route('/orders/')
def order_detail(order_id):
conn = get_db_connection()
order = conn.execute('SELECT * FROM Orders WHERE id = ?', (order_id,)).fetchone()
conn.close()
if order is None:
return "Order not found"
return render_template('order_detail.html', order=order)

if __name__ == '__main__':
# init_db() # uncomment to initialize the database
app.run(debug=True)

ایجاد فایل Schema (schema.sql)

فایل schema.sql را در کنار app.py ایجاد کنید و کد زیر را در آن قرار دهید:


DROP TABLE IF EXISTS Orders;
CREATE TABLE Orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
customer_name TEXT NOT NULL,
order_date TEXT NOT NULL,
total_amount REAL NOT NULL,
status TEXT NOT NULL
);

ایجاد قالب‌های HTML (templates/)

در پوشه templates/، فایل‌های HTML زیر را ایجاد کنید:

index.html

سیستم مدیریت سفارش

سیستم مدیریت سفارش

مشاهده لیست سفارشات

ثبت سفارش جدید

order_list.html

لیست سفارشات

لیست سفارشات

{% for order in orders %}

{% endfor %}

شناسه نام مشتری تاریخ سفارش مبلغ کل وضعیت جزئیات
{{ order['id'] }} {{ order['customer_name'] }} {{ order['order_date'] }} {{ order['total_amount'] }} {{ order['status'] }} مشاهده جزئیات

ثبت سفارش جدید

order_form.html

ثبت سفارش جدید

ثبت سفارش جدید

در حال پردازش
ارسال شده
تکمیل شده

بازگشت به لیست سفارشات

order_detail.html

جزئیات سفارش

جزئیات سفارش

شناسه: {{ order['id'] }}

نام مشتری: {{ order['customer_name'] }}

تاریخ سفارش: {{ order['order_date'] }}

مبلغ کل: {{ order['total_amount'] }}

وضعیت: {{ order['status'] }}

بازگشت به لیست سفارشات

اجرای برنامه

برای اجرای برنامه، در ترمینال به دایرکتوری پروژه بروید و دستور python app.py را اجرا کنید. سپس، مرورگر خود را به آدرس http://127.0.0.1:5000/ باز کنید.

توضیحات تکمیلی

این یک سیستم مدیریت سفارش بسیار ساده است. برای بهبود آن، می‌توانید ویژگی‌های زیر را اضافه کنید:

  • امکان ویرایش و حذف سفارشات
  • اعتبارسنجی ورودی‌ها
  • پیاده‌سازی سیستم لاگین و مدیریت کاربران
  • استفاده از یک پایگاه داده قوی‌تر مانند PostgreSQL یا MySQL
  • استفاده از یک ORM (Object-Relational Mapper) مانند SQLAlchemy برای تسهیل کار با پایگاه داده
  • بهبود طراحی رابط کاربری

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

بدون دیدگاه

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

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