2013-08-19 80 views
0

我想在Django中進行登錄驗證。我已登錄並註冊上方導航欄中的按鈕。Django模板:會話啓動時刪除按鈕

現在我需要實現的是當我登錄到應用程序重定向將發生,當時會話被檢查,如果會話已經開始然後登錄和註冊按鈕消失,用戶ABC按鈕在它的地方。

我正試圖用我的代碼在這裏完成剪切。

{% if request.session.loggedin %} 
    <li><a data-toggle="modal" href="#"><b>Hello Chitrank</b></a></li> 
{% else %} 
    <li><a data-toggle="modal" href="#signup"><b>Sign Up</b></a></li> 
    <li><a data-toggle="modal" href="#signin"><b>Sign In</b></a></li> 
{% endif %} 

請建議我做什麼,我使用了錯誤的方法來檢查會話或者有一些其他的方式做到這一點,則解決方案是值得歡迎的。

回答

5
{% if user.is_authenticated %} 

是你在找什麼。 https://docs.djangoproject.com/en/dev/ref/templates/api/#django-contrib-auth-context-processors-auth

也可以讓你做到這一點

<span>Welcome back {{ user.username }}!</span> 
+0

它仍然無法正常工作,因爲我在我的index.html頁面中使用了'{%include'./django_component_include/header.html'%}' –

+0

謝謝knightZeRo這段代碼爲我工作,並休息我cutomize我的登錄視圖。 –

0

還有另一種解決方案,基於登錄用戶(要求您使用django內置身份驗證系統)。 您可以在模板中訪問request.user.is_authenticated並區分其狀態(True爲loggend in)。

+0

我使用'{%如果request.user.is_authenticated%}'在我的檢查下會話的用戶signned模板,但是當我登錄到即使這樣我就會得到登錄和註冊按鈕。 –

0

您可以檢查您是否會在相應的視圖登錄,並通過可變current_user到您的模板,然後檢查:

{% if current_user %} 
     Hello, {{current_user.name}} 
    {% else %} 
     {# ... Display signin and signup buttons #} 
    {% endif %} 
+0

根據你說我已經更新了我的views.py文件,並且我的views.py是 'existing_user = User.objects.authenticate(** form.cleaned_data)'也引用了一個變量'siteuser = existing_user'並且返回了響應爲 '返回呈現(請求,'index.html',{'siteuser':siteuser})'但登錄後對我的模板沒有任何影響。 –