Итак, я хочу показать пользователям, которые не вошли в систему, и не регистрировались в разных меню.Django, помня, что пользователь вошел в систему
Если пользователь не вошел в систему (Логин, Регистрация)
Если он уже вошел в систему: (Main, Мой раздел, Выход)
views.py:
@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')
и шаблон:
{% block Menu %}
{% if not request.user.is_authenticated %}
<li> <a href="/posts/login">Login</a> </li>
<li> <a href="/posts/register/">Register</a></li>
{% endif %}
{% if request.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 %}
Когда в моей странице Логин я нажимаю на Submit, на следующей странице он прекрасно работает. Существует опция меню для зарегистрированных пользователей. Но тогда, что бы я ни сделал (обновите страницу, перейдите на главную страницу и т. Д.). Я увижу пункт меню для неавторизованных пользователей.
Я прочитал Джанго документацию для аутентификации пользователей, и теперь я знаю, что {% if user.is_authenticated %}
в шаблонах работает только с RequestContext
и если я получаю это право, нет никакого способа, чтобы сделать то, что я хочу этот путь.
Я хочу, чтобы Django помнил, что пользователь регистрируется во все времена независимо от того, что я делаю (обновляющая страница, нажатие ссылок и т. Д.) Есть ли способ сделать это в Django?
Итак, как я могу запомнить, что пользователь вошел в систему и использовал его в шаблоне?
Возможно, есть еще один способ запомнить, что пользователь вошел в систему и использовал его в шаблоне? Что-то с сеансами, cookis и т. Д.?
p.s. извините за мой плохой английский
попробуйте использовать user.is_authenticated только вместо request.user.is_authenticated –
вместо использования 'render_to_response' use' render' –
@vijayshanker Я пробовал это раньше, проблема остается прежней. –