bp = Blueprint('store', __name__)
@bp.route('/cart/<product_id>')
def add_to_cart(product_id):
print(session)
if "order_id" in session:
print(session["order_id"])
order = Order.query.get(session["order_id"])
# add products to order object ...
else:
order = Order()
db.session.add(order)
db.session.commit()
session["order_id"] = order.order_id
session.modified = True
return redirect(url_for('store.products'))
@bp.route('/', methods=['GET', 'POST'])
def products():
print(session)
ユーザーが初めてカートに商品を追加するときに、新しい注文を作成し、その注文の order_id (整数) をセッションに保存して、商品を注文に追加します。次に、カートに商品が追加されたら、注文を照会して商品を追加できます。
ただし、store.products ページへのリダイレクト要求の後、セッションは空の辞書にリセットされ続けます。セッションを実装してすべてのリクエストで持続し、それを使用して order_id を追跡する方法がわかりません。
私の注文テーブルは次のように定義されています。
class Order(db.Model):
__tablename__ = 'Orders'
order_id = db.Column(db.Integer, primary_key=True)
products = db.relationship('Product', secondary=cart, back_populates='orders')
customer_id = db.Column(db.Integer, db.ForeignKey('Customers.customer_id'))
customer = db.relationship('Customer', back_populates='orders')
quantities = db.relationship('Quantity')
message = db.Column(db.Text)