Django Session counter

时间:2017-07-29 15:50:09

标签: django

我正在Django做一个食品订单项目,我想设置一个独特的订单号,以便在用户来订单后快速验证用户。

如果我创建数字和字母的随机组合,则可能存在两个订单具有相同订单号的问题。是否可以使每个会话的订单号都是唯一的?

2 个答案:

答案 0 :(得分:1)

只需使用普通的增量订单号和一次性密码(OTP)

用户pyotp为订单生成随机OTP。

当用户订购时,创建一个秘密字符串。然后为用户生成OTP并将其发送给他们。

当他们到达接送时,他们会显示OTP。您可以使用pyotp和要验证的密码字符串进行检查。

使用基于计数器的OTP。

将密钥存储在订单模型中。

简单有效。

答案 1 :(得分:0)

您是将其存储在request.session上还是数据库中的模型?如果它是数据库中的模型更简单。只需在字段中设置unique=True kwarg即可。虽然你仍然需要生成独特的字段。

在他的问题中查看this guy's _createHash函数。结合已接受的答案,您可以通过这种方式创建唯一的订单ID。如果它只是附加了request.session对象,那么100%确定该字符串没有被重复会更加困难(如果不是不可能),因为没有办法查询所有现有的Sessions以获得自定义添加属性。不过,我认为session不是你要找的词。