首页 > 解决方案 > Django/Python 从 UUID 生成唯一的礼品卡代码

问题描述

我正在使用 Django 并在我的模型中使用 UUID v4 作为主键。

我正在使用这个 UUID 来生成用于某种礼品卡的二维码。

现在,客户还要求有一个使用10 个字符的礼品卡代码,以便有可能使用二维码(使用基于 UUID 的当前版本)获取礼品卡,也可以手动输入礼品卡代码(仅数字 10 个字符) )。

现在我需要找到一种方法来生成这个礼物代码。显然,这段代码大部分是唯一的。

我发现这篇文章,作者建议在生成代码中使用自动生成的 id(整数 id)(例如在随机字符串的末尾)。我不确定这一点,因为我只有 10 个字符:对于 long id,基本上我会触发一些可用字符来连接这个独特的部分。

例如,如果我的 id 是 609234,我将拥有{random-string with length 4} + 609234.

而且,我不喜欢这个解决方案,因为我认为它不是很确定,最好有一个完全随机的代码。从恶意用户的角度来看,有一种排序规则格式。

您是否知道一种使用例如输入唯一密钥(在我的情况下为 UUIDv4)生成唯一随机字符串的方法?

否则,您知道一些生成凭证代码的算法/方法吗?

标签: pythondjangouuid

解决方案


import string
import secrets

unique_digits = string.digits
password = ''.join(secrets.choice(unique_digits) for i in range(6))

print(password)

上面的代码托盘为您想要的位数生成一个唯一的整数代码。在上述情况下,它将打印一个 6 位唯一的整数代码。如果它不让我知道,你到底想要什么。


推荐阅读