[英]How to disable autofocus from username field in Django's UserCreationForm?
[英]How to make customer's email as the username in UserCreationForm / User Model in Django?
我在Django中使用UserModel和UserCreationForm。 但是,我不需要用戶名,而是要使用客戶的電子郵件作為登錄信息(即完全繞過/忽略用戶名字段)。
1.)只需在您的表單中使用戶名字段為可選,然后從電子郵件中刪除“ @”,然后向模型傳遞電子郵件作為用戶名。
2)創建一個自定義身份驗證后端(它將接受用戶名或電子郵件):
from django.contrib.auth.models import User
class EmailOrUsernameModelBackend(object):
def authenticate(self, username=None, password=None):
if '@' in username:
kwargs = {'email': username}
else:
kwargs = {'username': username}
try:
user = User.objects.get(**kwargs)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
相應地更改您的設置:
AUTHENTICATION_BACKENDS = (
'myoursite.backends.EmailOrUsernameBackend', # Custom Authentication to accept usernamee or email
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.