38👍
Well you could use uuid.hex
import uuid
uuid.uuid4().hex[:8] # Might reduce uniqueness because of slicing
Or Django also has helper function get_random_string which accepts two parameters length
(default=12) and allowed_chars
:
from django.utils.crypto import get_random_string
get_random_string(8)
7👍
Use os.urandom
for the data, and base64
encode it;
In [1]: import os
In [2]: import base64
In [3]: base64.b64encode(os.urandom(6)).decode('ascii')
Out[3]: '6Amtry80'
2👍
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 and encode
it into a unique string using hashids
. When the user requests the string, you can decode
it back into the integer and get your data.
- Django, Apache2 on Google Kubernetes Engine writing Opencensus Traces to Stackdriver Trace
- How is pip install using git different than just cloning a repository?
- Django queryset order_by dates near today
- Django app in heroku getting worker timeout error