Python Django通用登录视图是否自动创建变量?

Python Django通用登录视图是否自动创建变量?,python,django,variables,login,django-generic-views,Python,Django,Variables,Login,Django Generic Views,我使用的是django通用登录视图。这是我的URL.py from django.contrib.auth.views import login .... url(r'^login/$', login), 这是我的login.html页面: <body> <h1>User Login</h1> {% if form.errors %} <p>Your username and password did not match. P

我使用的是django通用登录视图。这是我的URL.py

from django.contrib.auth.views import login
....
url(r'^login/$', login),
这是我的login.html页面:

<body>
<h1>User Login</h1>

{% if form.errors %}
    <p>Your username and password did not match. 
    Please try again.</p>
{% endif %}
<form method="post" action="">{% csrf_token %}
    <p><label for="id_username">Username:</label>
    {{ form.username }}</p>

    <p><label for="id_password">Password:</label>
    {{ form.password }}</p>

    <input type="hidden" name="next" />
    <input type="submit" value="login" />
</form>
</body>
现在,一旦我成功登录,它会将我重定向到主页,因为在my settings.py中

LOGIN_REDIRECT_URL='/'
这是我的主页视图:

def main_page(request):
variables = {
 'head_title': 'Django Bookmarks',
'page_title': 'Welcome to Django Bookmarks',
'page_body': 'Where you can store and share bookmarks!',   
}
return render(request, 'main_page.html', variables)
这是我的主页模板(main_page.html):


在我登录用户后,行执行为true,即使在我的主页视图中,我甚至没有创建“user”变量/对象。我想知道,变量“user”究竟是在哪里创建的,它是如何作为变量发送到我的main_page.html模板的?

用户变量是由auth模块的上下文处理器注入的


请参见身份验证模块的上下文处理器注入
用户
变量


请参见分配(保证为
用户
匿名用户
之一),然后
身份验证
上下文处理器向模板公开
请求.User
,其权限为
用户
perms
,即分配(保证为
用户
匿名用户
之一),然后
auth
上下文处理器向模板公开
request.user
,其权限为
user
perms
template\u上下文处理器默认包括该上下文处理器:@synthomat hm,好的,因此每当我对用户进行身份验证时,就会将用户变量发送到我重定向的urlto?此变量被注入到应用程序所有页面之间的请求对象中。默认情况下,TEMPLATE_CONTEXT_处理器包括该上下文处理器:@synthomat hm,好的,因此每当我对用户进行身份验证时,用户变量就会被发送到我重定向到的url?此变量被注入到请求对象中,w它在应用程序的所有页面之间都存在。顺便说一句,您的模板中也有
perms
()顺便说一句,您的模板中也有
perms
def main_page(request):
variables = {
 'head_title': 'Django Bookmarks',
'page_title': 'Welcome to Django Bookmarks',
'page_body': 'Where you can store and share bookmarks!',   
}
return render(request, 'main_page.html', variables)
<body>
{% if user.username %}
    <p>Welcome {{ user.username }}</p>
{% else %}
<p>Welcome unknown user, please <a href='/login'>Login</a> in order to get full access to the website.</p>
{% endif %}
<h1>{{ page_title }}</h1>
<p>{{ page_body }}</p>
</body>
{% if user.username %}