用户身份验证基于登录或不登录django

时间:2013-10-16 19:20:56

标签: django templates authentication

我正在构建我的应用程序的问题。我了解如何验证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 -->

如何在模板中实现这一目标?如果我不能在模板中,我该怎么做呢?谢谢!

2 个答案:

答案 0 :(得分:3)

根据上下文呈现模板。所以试试这个:

{% 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 %}
django.contrib.auth.user型号

中的

is_authenticated() is a helper method

另请注意,is_active flag用于检查用户是否处于活动状态,并应用于检查用户是否可以成功登录系统。

您还可以使用模板中的request.user.is_authenticated访问当前登录的用户。

答案 1 :(得分: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 %}
相关问题