2017-03-09 42 views
0

我正在製作一個實踐的網絡應用程序,它是一個工作門戶。我想爲最終用戶可見的作業創建8位唯一ID。 ID可以有數字和字母。模式需要爲8位數字,不帶連字符或破折號,如XXXXXXXX{Python} {Django} {UUID}如何在python中創建一個8位(XXXXXXXX)唯一ID?

我知道在Python中有UUID的東西。但他們似乎以他們的特定格式生成了該ID。有沒有辦法以我所需的格式獲取ID?如果沒有人可以請指導我如何去做呢?

我知道有一個類似的線程How can I generate a unique ID in Python?;但它並沒有專門回答我的問題。它沒有回答我想要達到的目標。

在此先感謝。

+0

無恥插頭:使用我的優惠券代碼生成器在https://github.com/scardine/coupon-encode –

+0

的可能的複製[我能在Python中的唯一ID?(HTTP://計算器.com/questions/1210458/how-can-i-generate-a-unique-id-in-python) – Morishiri

回答

3

那麼你可以使用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() 
+0

可能值得一提的是,uuid4只會在其中包含字母字符af。 Django的幫助函數將是更好的選擇。 – wim

+0

使用'.lower()'會產生偏見,因爲現在小寫字母比數字出現的可能性高兩倍。如果你只需要小寫+數字,最好使用'allowed_chars'參數。 – knbk

+0

Django幫助函數做了我正在尋找的技巧。謝謝。 –

0

使用os.urandom的數據,並且base64對它進行編碼;

In [1]: import os 

In [2]: import base64 

In [3]: base64.b64encode(os.urandom(6)).decode('ascii') 
Out[3]: '6Amtry80'