まずは、application.pyにAPI routeを新規作成します。
from flask import Flask, jsonify, render_template, make_response, request, session
from flask_cors import CORS
import json
@application.route('/api/add_to_cart', methods=['POST'])
def add_to_cart():
item = json.loads(request.data.decode('utf-8'))
POSTでクライアントサイドからデータ(カートに入れる商品)を受け取ります。
日本語が入っている場合は、decode('utf-8')
でデコードしてあげる必要がありますが、デコードするとString型になってしまった、キーで値を取得できなくなってしまうので、json.loads
でJSONに戻してあげます。
# セッションの中に'cart_items'が無かったら初期化してあげる
if 'cart_items' not in session:
session['cart_items'] = []
cart_list = session['cart_items']
この時点で、変数cart_list
は、以下のどちらかの値が入っています。
⑴ カートに何も入っていなかった場合:[]
が代入される。
⑵ カートにすでに何か入っていた場合:[{item_id: 99, color: 'red', size: 'XS'}]
のような値が代入される。
cart_list.append(item)
session['cart_items'] = cart_list
変数cart_list
を初期化した後は、クライアントサイドから受け取ったitem
をappendして、session['cart_items']
に入れてあげます。
基本的にはこんなシンプルな感じですが、いざ実装しようとすると意外に悩んだりするので、参考までに。