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.

Вернуться на верх