所以,我想顯示記錄/未記錄的用戶不同的菜單。Django,記住用戶登錄
如果用戶沒有登錄(登錄,註冊)
如果他已經登錄:(主,我的個人資料,註銷)
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 %}
當我登錄頁面我點擊提交,下頁它完美的作品。有登錄用戶的菜單選項。 但是,無論我會做什麼(刷新頁面,轉到主頁等)我會看到沒有登錄用戶的菜單選項。
我讀過用戶認證Django文檔,現在我知道那 在{% if user.is_authenticated %}
模板只能與RequestContext
,如果我得到它的權利,也沒有辦法做我想做這樣。
我想讓Django記住,無論我在做什麼(刷新頁面,單擊鏈接等),用戶都會一直登錄Django有沒有辦法做到這一點?
那麼如何記住用戶已經登錄並在模板中使用它?
也許有另一種方式來記住用戶登錄並在模板中使用它?會議,烹飪等的東西?
p.s.對不起我的英文不好
嘗試使用user.is_authenticated改爲只request.user.is_authenticated – 2014-12-05 08:50:40
而不是使用'render_to_response'使用'render' – 2014-12-05 08:58:40
@vijayshanker我之前已經試過這,問題保持不變。 – 2014-12-05 08:59:06