我正在构建我的应用程序的问题。我了解如何验证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 -->
如何在模板中实现这一目标?如果我不能在模板中,我该怎么做呢?谢谢!
答案 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 %}