python - Django/Python 从 UUID 生成唯一的礼品卡代码
问题描述
我正在使用 Django 并在我的模型中使用 UUID v4 作为主键。
我正在使用这个 UUID 来生成用于某种礼品卡的二维码。
现在,客户还要求有一个使用10 个字符的礼品卡代码,以便有可能使用二维码(使用基于 UUID 的当前版本)获取礼品卡,也可以手动输入礼品卡代码(仅数字 10 个字符) )。
现在我需要找到一种方法来生成这个礼物代码。显然,这段代码大部分是唯一的。
我发现这篇文章,作者建议在生成代码中使用自动生成的 id(整数 id)(例如在随机字符串的末尾)。我不确定这一点,因为我只有 10 个字符:对于 long id,基本上我会触发一些可用字符来连接这个独特的部分。
例如,如果我的 id 是 609234,我将拥有{random-string with length 4} + 609234
.
而且,我不喜欢这个解决方案,因为我认为它不是很确定,最好有一个完全随机的代码。从恶意用户的角度来看,有一种排序规则格式。
您是否知道一种使用例如输入唯一密钥(在我的情况下为 UUIDv4)生成唯一随机字符串的方法?
否则,您知道一些生成凭证代码的算法/方法吗?
解决方案
import string
import secrets
unique_digits = string.digits
password = ''.join(secrets.choice(unique_digits) for i in range(6))
print(password)
上面的代码托盘为您想要的位数生成一个唯一的整数代码。在上述情况下,它将打印一个 6 位唯一的整数代码。如果它不让我知道,你到底想要什么。
推荐阅读
- javascript - 在运行谷歌脚本以从 AD 获取用户数据后,如何在我的谷歌工作表中省略“类型”和“值”这两个词?
- arrays - 如何快速找到数组元素中的最大数?
- javascript - ASP.NET javascript 在 remmed 代码上执行
- typescript - Typescript 条件返回类型:基于参数的对象或对象数组
- flutter - 如何使用动画滚动到 Flutter 中的下一行位置
- angular - 侧画菜单不显示
- terraform - 通过 sops exec-file 运行 terraform 计划
- docker - Docker Compose、Conda 和非标准证书
- python - 我可以在 Python 中使用变量引用类实例吗?
- azure-cosmosdb - 使用 GUID 作为实体 ID 与实体的“实际”ID