2016-09-04 2 views
0

Ich versuche die Abmeldefunktion auf meiner Seite zu erstellen. Aber diesen Rekursionsfehler bekomme ich immer, wenn ich auf den Link klicke, der auf die Abmelde-URL zeigt.Maximale Rekursionstiefe beim Abmelden überschritten (Anfrage)

Unten ist der Code, für was Inhalte und eine Abmeldung Funktionalität angezeigt werden soll, wenn der Benutzer angemeldet ist. Ansonsten zeigen Sie das Login-Formular.

Ansicht Methoden

def login(request): 

    username = request.POST.get('username') 
    password = request.POST.get('password') 

    user = authenticate(username=username, password=password) 

    context = { 

    } 

    if user is not None: 
     print('Correct user' 
    else: 
     print('Wrong user') 

     return render(request, 'index.html', context) 

def logout(request): 
    print('logged out') 
    logout(request) 

    return redirect('index') 

URL

urlpatterns = [ 
      url(r'^$', views.index, name='index'),   

      url(r'^login/$', views.login, name='login'), 

      url(r'^logout/$', views.logout, name='logout'), 
] 

index.html

{% if user %} 
     <h3>Hello {{user.username}}</h3> 
     <a href="{% url 'crowd:logout' %}">Logout</a> 
    {% else %} 
     <form action="{% url 'crowd:login' %}" method='post'> 
     {% csrf_token %} 
      <input class='logintext' type='text' placeholder='Username' name='username'> 
      <input class='logintext' type='password' placeholder='Password' name='password'><br> 
      <input class='loginbutton' type='submit' value='Login'> 
      <a class='loginforgotpassword' href="{% url 'crowd:register' %}"> Forgot password?</a> 
      <a class='loginregister' href="{% url 'crowd:register' %}"> Register</a> 
     </form> 
    {% endif%} 

Konsole Fehler:

File "C:\Users\Rasmus\workspace\Crowd\src\Cr\views.py", line 48, in logout 
    logout(request) 
    File "C:\Users\Rasmus\workspace\Crowd\src\Cr\views.py", line 48, in logout 
    logout(request) 
    File "C:\Users\Rasmus\workspace\Crowd\src\Cr\views.py", line 48, in logout 
    logout(request) 
    File "C:\Users\Rasmus\workspace\Crowd\src\Cr\views.py", line 47, in logout 
    print('logged out') 
RecursionError: maximum recursion depth exceeded 
[04/Sep/2016 23:35:59] "GET /Crowd/logout/ HTTP/1.1"436 

Antwort

1

Bitte ändern Sie den Namen Ihrer Abmeldesicht.

Der Fehler ist mit:

def logout(request): 
    print('logged out') 
    logout(request) 

    return redirect('index') 

Ihre Ansicht Name mit Anforderungsparameter abzumelden wird. Wenn Sie also in der Ansicht Abmeldung (Anfrage) aufrufen, ruft sie Ihre Abmeldesicht und nicht Djangos Abmeldefunktion auf. das verursacht Rekursion.

+0

Ah dummer Fehler. Vielen Dank! – vandelay

+0

Kein Problem. Wir waren alle hier in unserem Leben :) –

Verwandte Themen