Django如何生成uuid?

时间:2017-01-20 14:59:17

标签: python django uuid

我在Django中有一个使用uuid的模型:

uuid = models.CharField(max_length=100, default=uuid.uuid1)

问题是,当我一个接一个地生成2个对象时,我得到了这个:

933e35c4-df1c-11e6-8a53-ace01055799e

然后:

933e35c5-df1c-11e6-8a53-ace01055799e

据我所知,每个uuid是随机生成的,但碰撞的概率非常低,当我得到几乎相同的这两个uuid时,它们是如何精确生成的? (它只在第一个区块的最后一个数字上有所不同),这有多大可能?有更安全的方法吗?

问题是,我有一组客户,每个客户通过电子邮件获得一个独特的uuid,如果他们可以只改变一个角色并转到另一个客户的uuid那将是一个问题。

2 个答案:

答案 0 :(得分:1)

您正在使用uuid.uuid1,正如文档所述:

  

从主机ID,序列号和当前时间生成UUID。

您应该使用uuid.uuid4生成随机 uuid。

答案 1 :(得分:1)

它使用uuid.uuid1来执行此操作(这是您的默认值)。请参阅docs

  

从主机ID,序列号和当前时间生成UUID。   如果未给出node,则使用getnode()来获取硬件   地址。如果给出clock_seq,则将其用作序列号;   否则选择随机的14位序列号。

还有其他算法,可能uuid4正是您要找的。

相关问题