2009-12-18 33 views
1

我將在整個網站中使用電子郵件作爲用戶名,但是我仍然需要以某種方式預先填寫用戶模型中的必填用戶名字段。Django:在用戶名中使用散列/ guid

最初我正在考慮使用電子郵件的md5散列作爲用戶名,但由於30個字符的限制,這是不可能的。另外我不認爲我可以使用GUID,因爲它們在轉換爲字符串十六進制時也長於30個字符。

任何建議非常感謝!

+0

當用戶想要更改他們的電子郵件地址時會發生什麼? – Glen 2009-12-18 13:46:58

+0

這裏你的實際目標是什麼,只是爲了使用戶名字段是唯一的,從來沒有實際使用它的任何東西? – 2009-12-18 13:49:06

+0

@Glen,大概只需要在用戶表中進行更改,以便用戶使用他們的電子郵件地址登錄。有什麼問題? – 2009-12-18 13:49:11

回答

3

我不會過分強調GUID超過30個字符。一個合理的方法可能是使用類似MD5的方法來散列GUID,然後修剪掉最後2個字符。碰撞的機會實際上是零。 (16 是一個非常大的數字)。

1

這些鏈接string length of a GUIDCharacters in a GUID表明一個guid實際上只有16個字符長。它的ASCII碼相當於更長。所以,只要你在顯示之前來回轉換(或者如果你不打算顯示它們),一個GUID很適合用戶名字段。