Melden Sie sich in Django anPython

Python-Programme
Guest
 Melden Sie sich in Django an

Post by Guest »

Hallo Leute, ich habe Django gelernt und ein persönliches Projekt darauf aufgebaut. Aber als ich versuchte, ein benutzerdefiniertes Benutzermodell hinzuzufügen (mithilfe von AbstractUser), habe ich eine E-Mail-Spalte im Benutzermodell hinzugefügt und E-Mail als Login in meinem Anmeldeformular festgelegt, es funktioniert nicht
Schauen Sie sich also einen Teil von mir an Code
Dies ist meine Anmeldefunktion in Ansichten

Code: Select all

def login_page(request):
page = 'login_page'
if request.user.is_authenticated:
return redirect('home')
if request.method == "POST":
email = request.POST.get("email").lower()
password = request.POST.get("password")
print(email, password)
try:
user = User.objects.get(email=email)
print(user.password, user.username, user.email)
except Exception as e:
messages.error(request, "Can't Find User")
user = authenticate(request, email=email, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
messages.error(request, "Wrong Username Or Password!")

context = {'page': page}
return render(request, 'base/login_register.html', context)
Dies ist mein benutzerdefiniertes Benutzermodell mit der E-Mail-Adresse USERNAME_FIELD

Code: Select all

class User(AbstractUser):
name = models.CharField(max_length=200, null=True)
email = models.EmailField(unique=True, null=True)
bio = models.TextField(null=True)
avatar = models.ImageField(null=True, default="avatar.svg")

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []

Dies ist mein HTML, das das Passwort und die E-Mail-Adresse abfängt

Code: Select all

      
{% csrf_token %}
{% if page != 'login_page' %}

Username


Email


{% else %}

Email


{% endif %}
Also habe ich zum Beispiel den Benutzer mit den Anmeldeinformationen: Benutzername – admin, E-Mail – admin@email.com, Passwort – Lovell32bd
Ich habe einige Debug-Druckanweisungen

Code: Select all

- [07/Jul/2023 07:44:25\] "POST /login/ HTTP/1.1" 200 6526
- www.cool444@gmail.com Lovell32bd
- Lovell32bd tim www.cool444@gmail.com
- \[07/Jul/2023 07:44:38\] "POST /login/ HTTP/1.1" 200 6467
Es DRUCKT E-Mail und Passwort AUS
ES FINDET DIESEN BENUTZER IN DER DB
Aber diese Funktion meldet den Benutzer nicht andas Problem in dieser Zeile:

Code: Select all

user = authenticate(request, email=email, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
messages.error(request, "Wrong Username Or Password!")
Wenn Sie versuchen, den „Benutzer“ auszudrucken, wird None

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post