2011-03-22 93 views
0

這似乎應該沒問題,因爲我沒有觸及用戶模型本身。擴展Django用戶模型的合理策略?

我想純粹基於電子郵件和密碼註冊用戶。用戶模型中需要用戶名。我的想法是,我可以創建一個自定義的UserCreationForm來保存電子郵件地址AS用戶名並驗證電子郵件地址。

不幸的是,我不得不通過user.username繼續引用電子郵件地址。

這是標準嗎?有沒有更好的辦法?

謝謝

+2

不要這樣做:當電子郵件長度變得太長以待默認用戶字段時,您會遇到問題。如果你查看一些關於擴展用戶名字段長度的其他SO帖子,你可以這樣做。我已經採用存儲電子郵件地址的散列作爲用戶名並通過電子郵件地址登錄用戶。 – 2011-03-22 15:23:37

+0

是的,我沒有意識到用戶名有30個字符的限制,多麼令人討厭。你的方法很有意義Yuji。 – Ben 2011-03-22 15:47:37

回答

1

我的想法是,我可以創建一個自定義的UserCreationForm,保存電子郵件地址AS用戶名和驗證電子郵件地址。

關閉。

使用clean方法將電子郵件地址複製到用戶名。對於除默認登錄表單之外的所有內容,這都可以很好地工作

需要調整默認登錄表單,以允許用戶名成爲電子郵件地址。默認形式僅需要字符,並拒絕標點符號。

+0

啊哈,這個看起來不錯,很簡單。謝謝洛特 – Ben 2011-03-22 15:43:18

2

一些答案here

似乎最好的方法可能是編寫custom auth backend(不太難)接受電子郵件地址登錄,並將電子郵件的散列存儲在用戶名字段中以滿足所需的唯一用戶名。

+0

如果洛特的方法不起作用,我肯定會試試這個。感謝dgel – Ben 2011-03-22 15:44:11