I am making a web app for practice, it is a job portal. I want to create 8 digit unique IDs for job which will be visible to the end user. Ids can have numbers and alphabets. Pattern needs to be 8 digits without hyphens or dashes like XXXXXXXX.
I know there is UUID thing in python. But they seem to generate the id in their specific format. Is there a way to get the id in my required format? If not can someone please guide me on how to go about it?
I know there is a similar thread How can I generate a unique ID in Python?; but it does not answer my question specifically. It did not answer what I was trying to achieve.
Thanks in advance.
Use
os.urandom
for the data, andbase64
encode it;TLDR: use hashids to convert one-to-one between sequential integers and random-looking strings
If you are creating a web app and need to map string ids like
'x4ua9fam'
to some entry in a database, you want a robust one-to-one method of converting back and forth between an integer and the string id.Instead of generating a random id each time and checking if it has been taken, you can assign the next available sequential integer
(0, 1, 2, ...)
to each new item andencode
it into a unique string usinghashids
. When the user requests the string, you candecode
it back into the integer and get your data.Well you could use uuid.hex
Or Django also has helper function get_random_string which accepts two parameters
length
(default=12) andallowed_chars
: