2013-10-16 46 views
0

我遇到了我正在構建的應用程序的問題。我知道如何驗證,如果在Django用戶登錄或不和他們的會話是否主動配合:基於用戶身份驗證是否已登錄django

if user is not None and user.is_active: 

我的問題是我的Django與節專門的模板與Register | Login看起來像:

   <div id="subnav_registrationLogin"> 
        <ul> 
        {% block block_containersupernav %} 
         <li><span><a href="/Register" title="Register for Account">Register</a></span></li> 
         <li style="border:none;"><span><a href="/Login" title="Login To Account">Login</a></span></li> 
        {% endblock block_containersupernav %} 
        </ul> 
       </div><!-- /subnav_registrationLogin --> 

的問題是,我的模板是靜態的,這個小的代碼片斷上述需要更有活力,如:

if user is not None and user.is_active: 
    Log Out 

elif: 
    <div id="subnav_registrationLogin"> 
    <ul> 
    {% block block_containersupernav %} 
     <li><span><a href="/Register" title="Register for Account">Register</a></span></li> 
     <li style="border:none;"><span><a href="/Login" title="Login To Account">Login</a></span></li> 
    {% endblock block_containersupernav %} 
    </ul> 
</div><!-- /subnav_registrationLogin --> 

如何能夠做到THI s在模板中?如果我不能在一個模板中,我該怎麼做?謝謝!

+1

請記住,'is_active'屬性決不會告訴您用戶是否已通過身份驗證。 – Brandon

回答

2

模板根據上下文呈現。在django.contrib.auth.user模型

而且

{% if user.is_authenticated %} 
    <a href="{% url logout %}">Logout</a> 
{% else %} 
    <div id="subnav_registrationLogin"> 
     <ul> 
     {% block block_containersupernav %} 
      <li><span><a href="/Register" title="Register for Account">Register</a></span></li> 
      <li style="border:none;"><span><a href="/Login" title="Login To Account">Login</a></span></li> 
     {% endblock block_containersupernav %} 
     </ul> 
    </div> 
{% endif %} 

is_authenticated() is a helper method,注意is_active flag用來檢查用戶是否處於活動狀態,並且應該被用來檢查用戶是否可以成功登錄:那麼試試這個進入系統或沒有。

您還可以使用模板中的request.user.is_authenticated訪問當前登錄的用戶。

+0

工程出人意料地好。我也很感謝深入的解釋! – CodeTalk

0

那麼像這樣?

{% if user.is_authenticated %} 
<li><a href="{% url "logout" %}">Logout</a></li> 
{% else %} 
<div id="subnav_registrationLogin"> 
    <ul> 
    {% block block_containersupernav %} 
     <li><span><a href="/Register" title="Register for Account">Register</a></span></li> 
     <li style="border:none;"><span><a href="/Login" title="Login To Account">Login</a></span></li> 
    {% endblock block_containersupernav %} 
    </ul> 
</div><!-- /subnav_registrationLogin --> 
{% endif %}