我正在制作一个网页应用程序作为练习,它是一款职位门户网站。我想为职位创建8位数字唯一ID,这些ID将对最终用户可见。ID可以包含数字和字母。模式需要是8个数字,没有连字符或破折号,就像XXXXXXXX那样。
我知道Python中有UUID的东西。但是它们似乎会按照它们特定的格式生成ID。是否有办法以我的所需格式获取ID?如果不能,请有人指导我该如何做?
我知道有一个类似的线程如何在Python中生成唯一ID?;但它并没有明确回答我的问题。它没有回答我试图实现的内容。
提前致谢。
我正在制作一个网页应用程序作为练习,它是一款职位门户网站。我想为职位创建8位数字唯一ID,这些ID将对最终用户可见。ID可以包含数字和字母。模式需要是8个数字,没有连字符或破折号,就像XXXXXXXX那样。
我知道Python中有UUID的东西。但是它们似乎会按照它们特定的格式生成ID。是否有办法以我的所需格式获取ID?如果不能,请有人指导我该如何做?
我知道有一个类似的线程如何在Python中生成唯一ID?;但它并没有明确回答我的问题。它没有回答我试图实现的内容。
提前致谢。
你可以使用uuid.hex
import uuid
uuid.uuid4().hex[:8] # Might reduce uniqueness because of slicing
Django也有一个帮助函数get_random_string,它接受两个参数length
(默认为12)和allowed_chars
:
from django.utils.crypto import get_random_string
get_random_string(8)
.lower()
会产生偏差,因为现在小写字母出现的概率是数字的两倍。如果您只想要小写字母+数字,最好使用allowed_chars
参数。 - knbkos.urandom
获取数据,然后进行base64
编码;In [1]: import os
In [2]: import base64
In [3]: base64.b64encode(os.urandom(6)).decode('ascii')
Out[3]: '6Amtry80'
base64.urlsafe_b64encode()
和base64.urlsafe_b64decode()
。参考:https://docs.python.org/3/library/base64.html - tnwei