Python Django, Как я могу использовать имя пользователя (uname) или email в качестве учетных данных для входа в систему?
Python Django, Как я могу использовать имя пользователя (uname) или email в качестве учетных данных для входа в систему? мой python файл views,URLs,models,settings.py
def loginpage(request):
if request.method=="POST":
try:
Userdetails=newacc.objects.get(email=request.POST['email'],pwd=request.POST['pwd'])
print("Username=",Userdetails)
request.session[ 'email']=Userdetails.email
return render(request,'Logout.html')
except newacc.DoseNotExist as e:
messages.success(request,' Username / Password Invalid.')
return render(request,'Login.html')
Вы можете работать с объектом Q, чтобы сделать дизъюнкцию между email и uname:
from django.db.models import Q
if request.method=="POST":
try:
Userdetails=newacc.objects.get(
Q(email=request.POST['email']) | Q(uname=request.POST['email']),
pwd=request.POST['pwd']
)
print("Username=",Userdetails)
request.session[ 'email']=Userdetails.email
return render(request,'Logout.html')
except newacc.DoseNotExist as e:
messages.success(request,' Username / Password Invalid.')
return render(request,'Login.html')
Но похоже, что ваша модель пользователя не использует хэширование паролей. Я настоятельно советую прочитать документацию по управлению паролями и хэшировать пароли в вашей модели пользователя, чтобы предотвратить использование хакерами паролей, хранящихся в базе данных, если им удастся ее прочитать. Смотрите также этот раздел о настройке аутентификации в Django.