我創建了一個自定義函式來在繼承 DefaultSocialAccountAdapter 的類中創建自定義用戶名。代碼如下。
def _build_username(self,data):
from allauth.utils import generate_unique_username
if(not data.get('username')):
first_name=data.get('first_name','').lower()
last_name=data.get('last_name','').lower()
suggested_username = (f"{first_name}{last_name}",)
username = generate_unique_username(suggested_username)
return username
但它拋出 lower() was called on None
我試圖將名稱轉換為小寫,因為這是我們的資料庫支持用戶名的方式。當我嘗試執行谷歌登錄身份驗證方法時會發生這種情況。
uj5u.com熱心網友回復:
這是因為,資料可能包含 first_name 或 last_name 鍵,但其值可能為 None。所以你可以添加一個條件檢查來確保它不是 None
def _build_username(self,data):
from allauth.utils import generate_unique_username
if(not data.get('username')):
first_name=data.get('first_name','')
last_name=data.get('last_name','')
l=[]
if(first_name):
l.append(first_name.lower().strip())
else:
l.append('')
if(last_name):
l.append(last_name.lower().strip())
else:
l.append('')
suggested_username = (f"{l[0]}{l[1]}",)
username = generate_unique_username(suggested_username)
return username
uj5u.com熱心網友回復:
'first_name'如果位于data并將鍵與 相關聯,則這是可能的None,{'first_name': None}例如。
您可以使用or運算子將??其替換為空字串,因此:
def _build_username(self,data):
from allauth.utils import generate_unique_username
username = data.get('username')
if not username:
first_name=data.get('first_name') or ''
last_name=data.get('last_name') or ''
username = generate_unique_username(f'{first_name}{last_name}'.lower())
return username
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535530.html
標籤:姜戈验证
