我正在Django中进行电子商务,用户可以在将它们添加到购物车之前选择多个项目,当点击添加到购物车按钮时,我在用户的购物车中使用时间戳作为对象ID。
当点击添加到购物车按钮时,我有一个词典
{"item_id":"qty"}
创建购物车对象就像
{"timestamp":"item_id;qty"}
时间戳用作唯一ID,因此如果需要删除,我可以为购物车的行提供id,如果是,则在后端发送购物车元素的id并从用户的购物车中删除相同的元素宾语
时间戳不是唯一的......进程太快,以至于时间戳保持不变并且不会生成不同的密钥,任何具有不同时间戳的建议都将受到赞赏。
时间戳用作唯一ID,因此如果需要删除,我可以为购物车的行提供id
你正在咆哮错误的树,试图解决一个不适合原始问题的解决方案中的问题;即你有一个XY problem。
最简单的解决方案:使用list
而不是dict
。根据定义,list
将具有唯一键。 list
的唯一问题是在Web场景中,您可能正在处理两个并行或过时的请求,并且索引可能在到达您的服务器时引用不同的元素。
因此,要使用真正独特,不变的ID,请使用uuid
module:
from uuid import uuid4
a = [1 ,2 ,3 , 4 , 5]
b = {}
for i in a:
b[uuid4()] = i
你去,保证独特的ID。
如果您希望您的密钥是唯一的并且基于时间,则只需手动递增它们:
import time
key = time.time() * 1000
a = [1 ,2 ,3 , 4 , 5]
b = {}
for i in a:
b[key] = i
key += 1
print(b)
如何使用datetime
模块
from datetime import datetime
for i in a:
b[datetime.now()] = i
编辑:
也许更好的方法是将其添加到时间戳中。一种方法是在混合中添加UUID。
import uuid
for i in a:
b[timestamp() + uuid.uuid4()] = i
但我可能会稍微伸展一下。只是一个建议。