0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python Flask sessionを使ってECのカートシステムを再現してみた

Posted at

tl;dr

  • Flasksessionを使うと、Cookieに任意の(ハッシュ化される)データを付与することができる
  • 今回はECサイトのカートに追加された商品を記録し、カート内アイテム数の表記変更、及びcheckout時に使用するデータとしている

what I did

商品の"Add to cart"ボタンを押すことにより、"/cart/<product_id>"POSTsessionにカート追加したアイテムを追加して、カートに入っているitems数をindexに表示している。(htmlのコードは省略)
わかりづらいが、"Add to Cart"ボタンによって右上のカート数が1増えている

追加前
Screenshot 2023-02-25 at 2.10.28 PM.png

追加後
Screenshot 2023-02-25 at 2.10.35 PM.png

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はさまざまな使い方ができそうだが、HTTPCookieを十分に理解しているとは言い難いため、勉強する。まずは3分間ネットワーク あたりを読んで勉強したいと思った。
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?