2016-07-30 1 views
1

Ich habe ein Problem mit der Methode Login(), die Variable 'Benutzer', wenn es den Benutzer enthält, aber diese Methode fehlschlägt. könnte helfen, das Problem zu erkennen.django 1.8.13 'Benutzer' Objekt hat kein Attribut 'Benutzer'

from django.contrib.auth import authenticate, login 

def login(request): 
if request.user.is_authenticated(): 
    return render(request, 'Default.html') 

mensaje = '' 
if request.method == 'POST': 
    username = request.POST.get('username') 
    password = request.POST.get('password') 
    User = authenticate(username=username, password=password) 
    if User is not None: 
     if User.is_active: 
      login(User) 
      return render(request, 'Default.html') 
     else: 
      return render(request, 'accounts/login.html', {'mensaje':mensaje}) 
    else: 
return render(request, 'accounts/login.html', {'mensaje':mensaje}) 
+0

wie dies in der Dokumentation benennen auch zwei Parameter senden in der Methode Anmeldung fehlschlägt() –

Antwort

1

Sie importieren Anmeldung von django.contrib .auth aber schau dir deine nächste Codezeile an.

from django.contrib.auth import authenticate, login 

def login(request): 
    if request.user.is_authenticated(): 
     return render(request, 'Default.html') 

Ja, Sie überschatten diese Login-Methode mit einer für Ihre eigenen. Die Lösung wäre eine eigene funciton

def my_login(request): 
    if request.user.is_authenticated(): 
     return render(request, 'Default.html') 
+0

Genau, du hast absolut recht, da wurde mir klar, dass, vielen Dank –

0

Auch nach der Dokumentation, login() Funktion erwartet 2 Argumente in weitergegeben werden - eine Anforderung Instanz und ein Benutzermodell Beispiel:

login(request, User) 
+0

so das erste, was aber ich unter diese erklären versagt - „login() nimmt 1 Positionsargument aber 2 wurden gegeben "... –