合并购物车
合并購物車邏輯分析
如果 cookie 中的購物車數(shù)據(jù)在 Redis 數(shù)據(jù)庫中已存在
將 cookie 購物車數(shù)據(jù)覆蓋 Redis 購物車數(shù)據(jù)。
如果 cookie 中的購物車數(shù)據(jù)在 Redis 數(shù)據(jù)庫中不存在,
將 cookie 購物車數(shù)據(jù)新增到 Redis。
最終購物車的勾選狀態(tài)以 cookie 購物車勾選狀態(tài)為準(zhǔn)。
合并購物車邏輯實(shí)現(xiàn)
import base64 import pickle from django_redis import get_redis_connectiondef merge_cart_cookie_to_redis(request, response, user):'''合并購物車中cookie的數(shù)據(jù)到redis:return: '''# 1.獲取cookie的數(shù)據(jù)cookie_cart = request.COOKIES.get('carts')# 2.判斷數(shù)據(jù)是否存在, 如過不存在, 返回if not cookie_cart:return response# 3.如果存在, 解密cart_dict = pickle.loads(base64.b64decode(cookie_cart))new_dict = {} # hash: user_id:{sku_id:count}new_add = []new_remove = []# 4.整理格式(dict add remove)for sku_id, dict in cart_dict.items():new_dict[sku_id] = dict.get('count')if dict['selected']:# truenew_add.append(sku_id)else:# falsenew_remove.append(sku_id)# 5.鏈接redisredis_conn = get_redis_connection('carts')# 6.往hash寫入(dict)redis_conn.hmset('carts_%s' % user.id, new_dict)# 7.往set中增加或者刪除if new_add:redis_conn.sadd('selected_%s' % user.id, *new_add)if new_remove:redis_conn.srem('selected_%s' % user.id, *new_remove)# 8.刪除cookieresponse.delete_cookie('carts')# 9.返回return response轉(zhuǎn)載于:https://www.cnblogs.com/oklizz/p/11241129.html
總結(jié)
- 上一篇: Vss服务端用户存在,但客户端登陆不进去
- 下一篇: 统计一个panel中lable的个数