tl;dr
-
Flask
のsession
を使うと、Cookie
に任意の(ハッシュ化される)データを付与することができる - 今回はECサイトのカートに追加された商品を記録し、カート内アイテム数の表記変更、及び
checkout
時に使用するデータとしている
what I did
商品の"Add to cart"ボタンを押すことにより、"/cart/<product_id>"
にPOST
。session
にカート追加したアイテムを追加して、カートに入っているitems数をindex
に表示している。(htmlのコードは省略)
わかりづらいが、"Add to Cart"ボタンによって右上のカート数が1増えている
install
$ pip install Flask-Session
python app.py
from flask import Flask, session
from stripe_csv_to_db import get_item_by_productID as get_item_by_productID
app.secret_key = os.environ.get("Flask_session.secret_key")
app.permanent_session_lifetime = timedelta(hours=3)
@app.route("/", methods = ['GET'])
def index():
cart_items_number = 0
if 'cart_items' in session:
cart_items_number = len(session['cart_items'])
products = products_get_data()
return render_template('index.html', products=products, cart_items_number = cart_items_number)
@app.route("/cart/<product_id>", methods=['POST'])
def add_to_cart(product_id):
item = get_item_by_productID(product_id)
session.permanent = True
session["id"] = product_id
if 'cart_items' not in session:
session['cart_items'] = []
cart_list = session['cart_items']
cart_list.append(item[0])
session['cart_items'] = cart_list
return redirect("/")
Home work
- Sessionはさまざまな使い方ができそうだが、
HTTP
やCookie
を十分に理解しているとは言い難いため、勉強する。まずは3分間ネットワーク あたりを読んで勉強したいと思った。