2016-04-16 7 views
1

Ich habe versucht, es so zu machen, dass nur ein Benutzer, der angemeldet ist, auf eine Seite zugreifen kann, aber ich kann nicht scheinen, es zur Arbeit zu bringen.Ich erlaube nur authentifizierten Benutzern, auf bestimmte Seiten in django zuzugreifen

Das ist mein views.py

@login_required 
def course(request): 
    data = Students.objects.all() 
    context = {'data', data} 
    if not request.user.is_authenticated(): 
     return HttpResponseRedirect('/') 
    else: 
     return render_to_response('login/course.html', context) 

ich auch

Zugang zu beschränken haben versucht
{% if user.is_authenticated %} 
    <h1>Course Page!</h1> 
{% else %} 
    <a href="/">login</a> 
{% endif %} 

Der erste Weg, indem ich in der views.py Datei versucht, mich immer lassen Sie die Seite und der zweite Weg zeigt immer nur den Login-Link an. Es ist wahrscheinlich etwas Kleines, aber ich kann es nicht verstehen. Kann mir jemand in die richtige Richtung zeigen?

+0

Also um zu klären, wenn Sie sagen "Der erste Weg, den ich in der Datei views.py probiert habe immer lassen Sie mich die Seite sehen", meinst du es ist 'login/course.html' Rendering? –

+0

Ja, tut mir leid, das war mir nicht klar –

Antwort

1

Dies sollte genug sein. Wenn ein anonymer Benutzer weiterhin auf diese Ansichtsfunktion zugreifen kann, wird der Benutzer möglicherweise authentifiziert.

@login_required(login_url='/') 
def course(request): 
    data = Students.objects.all() 
    return render(request, 'login/course.html', {'data': data}) 

Sind Sie sicher, dass Sie nicht authentifiziert sind? Versuchen Sie, Cookies für localhost zu löschen, und öffnen Sie die Ansicht erneut.

0

Ihrer Ansicht nach versuchen, dem Bestehen des Benutzers durch die Reaktion mit so etwas wie:

return render_to_response('login/course.html', {'context': context, 'user': request.user}) 
Verwandte Themen