LoginSignup
10
8

More than 5 years have passed since last update.

Flaskのsessionを使ってショッピングカートを実装してみる

Last updated at Posted at 2018-05-20

まずは、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']に入れてあげます。

基本的にはこんなシンプルな感じですが、いざ実装しようとすると意外に悩んだりするので、参考までに。

参考

How to add more than item to the session in Flask

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8