@csrf_protect
def loginn(request):
c = {}
c.update(csrf(request))
return render_to_response("login/login.html",c)
@csrf_protect
def auth_view(request):
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(request, user)
return render_to_response('login/loggedin.html',RequestContext(request))
else:
return HttpResponseRedirect('/posts/invalid')
def loggedin(request):
return render_to_response('login/loggedin.html',
{'full_name' : request.user.username})
def invalid_login(request):
return render_to_response('login/invalid_login.html')
def logout(request):
logout(request)
return render_to_response('login/logout.html')
Это то, что я имею в моих представлениях.py. Он работает, проверяет пароль, пользователь и т. Д. Но я не знаю, как запомнить, что пользователь вошёл в систему.Django, как помнить, что пользователь вошел в систему?
Я хочу показать зарегистрированным/не зарегистрированным пользователям разные меню. Пробовал как то в моем templates
:
{% block Menu %}
{% if not user.is_authenticated %}
<li> <a href="/posts/login">Login</a> </li>
<li> <a href="/posts/register/">Register</a></li>
{% endif %}
{% if user.is_authenticated %}
<li><a href="/posts">Main</a></li>
<li><a href="#">My profile</a></li>
<li><a href="/posts/logout">logout</a></li>
{% endif %}
{% endblock %}
Но это работает только один раз и только с render_to_response
+ RequestContent
Все остального времени у меня есть первый вариант. (Вход, зарегистрируйтесь)
Итак, как я могу запомнить, что пользователь вошел в систему?
p.s. извините за мой плохой английский
Да, вам нужен RequestContext, поскольку он автоматически передает объект 'user' в шаблон. Что кажется неправильным? –
@ DanielRoseman, когда я возвращаюсь на главную страницу, после входа в систему он не работает, и у меня снова есть (Login, Register) вариант (но я уже вошел в систему) вместо 2. –