Django:user.is_authenticated,无需传递'用户'即可工作?

时间:2013-10-11 09:49:55

标签: django django-templates

当我关注教程时,我发现了这一点:
我有一个模板'base.html',我甚至没有从视图中传递'user'变量的值。 但它仍然对用户进行身份验证。我无法理解这是如何工作的:
base.html:

{% if user.is_authenticated %}

<div id='nav'>
    <a href='/'/> mysite </a> |
    <a href='/user/{{user.username}}/'>{{ user.username }} </a>(<a href='/logout'>logout</a>)
</div>

{% endif %}
<h1>{% block head %}{% endblock %}</h1>
{% block content %}{% endblock %}

2 个答案:

答案 0 :(得分:1)

即使您未在视图响应中隐式传递,也可以访问user对象。 默认情况下,它是anonymous user,直到用户登录并验证自身

答案 1 :(得分:0)

您可能拥有auth上下文处理器和/或中间件集,它将用户变量添加到上下文

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
)

MIDDLEWARE_CLASSES = (
    "django.contrib.auth.middleware.AuthenticationMiddleware",
)