Django身份驗證具有用戶名和名稱字段。但是,用戶名具有字段選項unique = True。這可防止用戶在註冊時給first_name與用戶名相同並引發IntegrityError。如何繞過這一點,並保持用戶名唯一?即。沒有兩個用戶應該有相同的用戶名。但用戶名可以與first_name相同。並且兩個用戶可以具有相同的first_name,last_name。如何讓django auth獲取用戶名和名字相同的值?
回答
你無法做到這一點。如果您想在first_name和username字段中具有相同的值,並且其中一個值不唯一,另一個值也不能唯一。
據我瞭解你在這裏做什麼,你只是想顯示first_name而不是用戶名 - 以達到只使用{{ user.first_name }}
,而不是僅僅使用{{ user }}
。如果您需要存儲一些關於用戶的附加信息,您還可以定義Profiles,您可以在其中實施自己的__str__
方法。
謝謝@zeroos指出配置文件。這解決了目的。 – Bharathwaaj 2012-08-05 11:09:40
您將不得不實施使用first_name
作爲用戶名的自定義身份驗證後端。
在註冊期間,您可以複製username
與first_name
或生成一個永遠不會使用的隨機用戶名,因爲您將始終使用first_name
代替。
你必須要照顧的
- 在創建/註冊用戶的時候創建。
- 用戶名(在你的案件名字)應該是唯一的
在認證後端代碼會是這樣的(這只是一個示例代碼):
def authenticate(self, username=None, password=None):
try:
user = User.objects.get(first_name=username)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
參考Writing authentication backend。
有很多關於如何使用email
進行身份驗證的示例,您可以參考使用first_name
進行身份驗證。
謝謝Rohan抽空回答。我從@zeroos得到了解決方案,幫助我解決了這個問題。不過,您與自定義身份驗證後端的鏈接非常有用。我正在爲此回答這個問題。 – Bharathwaaj 2012-08-05 11:12:06
- 1. 獲取用戶名asp.net windows auth
- 2. auth用戶名
- 3. 相同的用戶名和電子郵件的Django用戶?
- 4. 如何獲取Firebase用戶的名字
- 5. Django rest-auth allauth註冊電子郵件,名字和姓氏,沒有用戶名
- 6. 如何在Django中獲取登錄用戶的用戶名?
- 7. 如何通過其主用戶名獲取所有值,其中用戶名與用戶名相關
- 8. 如何獲取用戶名?
- 9. laravel,獲取Auth :: user()表名
- 10. 獲取用戶名和域名在C++
- 11. 如何在Django中獲取登錄用戶的名字和姓氏?
- 12. 獲取相同的簽名使用PHP
- 13. 如何從相同的名稱獲取所有值xml c#
- 14. 如何獲取登錄的Windows用戶的名字和姓氏?
- 15. 如何避免在django-auth中創建'用戶名'
- 16. 如何在Mysql中執行一個查詢以獲取用戶名和相同的查詢以從同一用戶表中獲取另一個用戶名?
- 17. 使用python獲取auth簽名yipp api
- 18. 如何使用Django中的用戶獲取組名稱
- 19. 如何Django的request.GET中獲取的用戶名
- 20. 如何獲取具有相同名稱的所有輸入字段的值?
- 21. 獲取同名輸入值
- 22. 獲取Facebook'用戶名'或'用戶名'
- 23. 如何通過ldap中的域名獲取用戶的用戶名和SID
- 24. 獲取用戶名爲當前用戶名的行的總和
- 25. Auth以名稱或用戶名Laravel 5.2
- 26. 獲取具有相同名字和姓氏的行ID
- 27. 如何以多種形式獲取同名的字段的值?
- 28. 如何從具有相同名稱的多個下拉字段中獲取值
- 29. 如何通過Django中的user_id獲取用戶名?
- 30. 如何在django 1.10中獲取當前的「用戶名」?
用戶認證的內容是什麼?可能是例子將有助於理解你的問題。 – Rohan 2012-08-05 07:24:31
用戶將使用用戶名和密碼進行身份驗證。註冊時,它應該爲用戶名和名字提供相同的值。 – Bharathwaaj 2012-08-05 07:32:18
只要名稱在網站範圍內唯一,名就可以用於用戶名。破壞用戶身份驗證的唯一性沒有多大意義。 – 2012-08-05 07:46:35