Przepraszamy, jeśli próbowałeś mi pomóc, gdy zapytałem o to wcześniej. Musiałem usunąć to pytanie, ponieważ nie mogłem z jakiegoś powodu edytować dodatkowych informacji.Masz problemy z user.is_authenticated w szablonie django
Pracuję nad wdrożeniem uwierzytelniania użytkownika w mojej witrynie django. Wszystko działa poprawnie. Moje widoki, modele, adresy URL itp. Są skonfigurowane. Użytkownicy mogą się rejestrować, logować, wylogowywać. Problem mam z tym jest trochę kodu:
{% if request.user.is_authenticated %}
<li><a href="/logout">Log Out</a></li>
{% else %}
<li><a href="/login">Log In</a></li>
{% endif %}
Nawet kiedy jestem zalogowany, to nadal jest wyświetlanie „Zaloguj” jako opcja zamiast „Wyloguj”. Jednak jeśli kliknę link, przekieruje mnie on/profile, ponieważ jest to tym, co widok powie, że powinienem zrobić, jeśli jestem zalogowany. Więc, oczywiście, wie, że jestem zalogowany, ale szablon nie jest readint user.is_authenticated jako true.
Widok odnoszące się zalogować żądania to:
def LoginRequest(request):
if request.user.is_authenticated():
return HttpResponseRedirect('/profile/')
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
profile = authenticate(username=username, password=password)
if profile is not None:
login(request, profile)
return HttpResponseRedirect('/profile/')
else:
return render_to_response('template/login.html', {'form': form}, context_instance=RequestContext(request))
else:
return render_to_response('template/login.html', {'form': form}, context_instance=RequestContext(request))
else:
''' user is not submitting the form, show them login form '''
form = LoginForm()
context = {'form': form}
return render_to_response('template/login.html', context, context_instance = RequestContext(request))
Moi procesory kontekst szablon są ("django.contrib.auth.context_processors.auth " "django.core.context_processors.debug" "django.core.context_processors.i18n" "django.core.context_processors.media" "django.core.context_processors.static" " Django. core.context_processors.tz ", " django.contrib.messages.context_processors.messages ") jaka jest ścieżka do żądania jednego? – Xonal
Ścieżka podana jest w dokumentach, z którymi się łączyłem. – Alasdair
Och, nie zdawałem sobie sprawy, że zostawiłem prośbę. user.is_authenticated w. Próbowałem go dodać, bo myślałem, że to pomoże, ale nie. Szablon nie działa z lub bez "request" tam – Xonal