import pickle,base64
# Cookie数据的编码
def carts_cookie_encode(cart_dict):
"""
把购物车字典数据,经过pickle和base64编码成可视化字符
:param cart_dict: 购物车字典
:return: 可视化字符串
"""
# 1、使用pickle把字段编码成字节
# 2、base64编码把字节编程成可视化字符
return base64.b64encode(
pickle.dumps(cart_dict)
).decode()
# Cookie数据解码
def carts_cookie_decode(cart_str):
"""
把Cookie中的购物车数据(可视化字符串),经过base64解码和pickle解码成字典
:param cart_str: cookie中的字符串表示的购物车数据
:return: 购物车字典
"""
# 1、base解码
# 2、pickle解码
return pickle.loads(
base64.b64decode(cart_str.encode())
)
if __name__ == '__main__':
# 编写针对当前模块的测试代码
d = {'1': {'count': 10, 'selected': True}, '2': {'count': 20, 'selected': False}}
# 编码
cart_str = carts_cookie_encode(d)
print("编码之后的可视化字符串:", cart_str)
# 解码
cart_dict = carts_cookie_decode(cart_str)
print("解码之后的字典数据:", cart_dict, type(cart_dict))