실시간 주문 시스템은 고객이 주문을 한 후에 실시간으로 주문 상태를 확인할 수 있는 시스템입니다. 이러한 시스템을 개발하기 위해서는 웹 프레임워크를 활용하는 것이 좋습니다. 웹 프레임워크를 이용하면 웹 어플리케이션을 쉽게 개발할 수 있으며, 실시간 업데이트와 상태 확인을 구현하는 것도 간편해집니다.
Python 언어를 기반으로 한 웹 프레임워크 중 하나인 Flask를 이용하여 실시간 주문 시스템을 개발해보겠습니다.
1. Flask 설치하기
Flask를 사용하기 위해서는 먼저 Flask를 설치해야 합니다. 아래의 명령어를 사용하여 Flask를 설치합니다.
pip install flask
2. 기본적인 Flask 앱 만들기
Flask를 이용하여 웹 애플리케이션을 개발하기 위해서는 먼저 기본적인 Flask 앱을 만들어야 합니다. 아래의 코드를 작성하여 app.py
파일에 저장합니다.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
if __name__ == '__main__':
app.run(debug=True)
3. 주문 상태 확인 기능 구현하기
주문 상태 확인 기능을 구현하기 위해서는 데이터베이스를 사용해야 합니다. 본 예제에서는 간단한 SQLite 데이터베이스를 사용하겠습니다. 먼저 SQLite 데이터베이스를 생성하고, 아래의 코드를 작성하여 models.py
파일에 저장합니다.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
customer_name = db.Column(db.String(100))
order_status = db.Column(db.String(20))
def __init__(self, customer_name):
self.customer_name = customer_name
self.order_status = '주문 완료'
def to_dict(self):
return {
'id': self.id,
'customer_name': self.customer_name,
'order_status': self.order_status
}
4. 실시간 업데이트 기능 구현하기
실시간 업데이트 기능을 구현하기 위해서는 WebSocket을 활용할 수 있습니다. Flask-SocketIO를 사용하여 WebSocket을 구현해보겠습니다. 아래의 코드를 작성하여 app.py
파일에 저장합니다.
from flask import Flask, render_template, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_socketio import SocketIO
from models import db, Order
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///orders.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
socketio = SocketIO(app)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/orders')
def get_orders():
orders = Order.query.all()
return jsonify([order.to_dict() for order in orders])
@socketio.on('order_update')
def update_order_status(data):
order_id = data['order_id']
new_status = data['new_status']
order = Order.query.get(order_id)
order.order_status = new_status
db.session.commit()
socketio.emit('order_updated', {'order_id': order_id, 'new_status': new_status}, namespace='/')
if __name__ == '__main__':
app.run(debug=True)
5. 실시간 주문 상태 확인하기
주문 상태를 실시간으로 확인하기 위해서는 JavaScript를 사용하여 웹페이지를 업데이트해야 합니다. 아래의 코드를 작성하여 home.html
파일에 저장합니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>주문 상태 확인</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('order_updated', function(data) {
var order_id = data.order_id;
var new_status = data.new_status;
$('#' + order_id + '_status').text(new_status);
});
});
</script>
</head>
<body>
<h1>주문 상태 확인</h1>
<table>
<tr>
<th>ID</th>
<th>고객명</th>
<th>주문 상태</th>
</tr>
{% for order in orders %}
<tr>
<td>{{ order.id }}</td>
<td>{{ order.customer_name }}</td>
<td id="{{ order.id }}_status">{{ order.order_status }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
위의 코드를 실행하면 주문 상태를 실시간으로 확인할 수 있는 웹 페이지가 생성됩니다. 주문이 업데이트되면 해당 주문의 상태가 자동적으로 업데이트되어 화면에 표시됩니다.
이와 같이 웹 프레임워크를 이용하여 실시간 주문 시스템을 구현할 수 있습니다. Flask를 사용한 방법을 예로 들었지만, 다른 웹 프레임워크를 이용해도 비슷한 방식으로 개발할 수 있습니다.