我正在为练习制作一个网络应用程序,它是一个工作门户网站。我想为作业创建8位唯一ID,这对最终用户可见。 ID可以有数字和字母。模式必须为8位数,不带连字符或短划线,如 XXXXXXXX 。
我知道python中有UUID的东西。但它们似乎以特定格式生成id。有没有办法以我所需的格式获取ID?如果不是,有人可以指导我如何去做吗?
我知道有类似的帖子How can I generate a unique ID in Python?;但它没有具体回答我的问题。它没有回答我想要实现的目标。
提前致谢。
答案 0 :(得分:10)
你可以使用uuid.hex
import uuid
uuid.uuid4().hex[:8]
或者Django还有辅助函数get_random_string,它接受两个参数length
(默认= 12)和allowed_chars
:
from django.utils.crypto import get_random_string
get_random_string(8).lower()
答案 1 :(得分:2)
对数据使用os.urandom
,base64
对其进行编码;
In [1]: import os
In [2]: import base64
In [3]: base64.b64encode(os.urandom(6)).decode('ascii')
Out[3]: '6Amtry80'
答案 2 :(得分:1)
TLDR:使用hashids在顺序整数和随机字符串之间一对一转换
如果您要创建Web应用程序,并且需要将'x4ua9fam'
之类的字符串ID映射到数据库中的某些条目,则需要一种健壮的一对一方法在整数和字符串之间来回转换。 ID。
您可以为每个新项目分配下一个可用的顺序整数(0, 1, 2, ...)
,而不必encode
将其分配给唯一的字符串,而不必每次都生成一个随机id并使用{{ 3}}。当用户请求该字符串时,您可以decode
将其返回为整数并获取数据。