使用django.contrib.auth.context_processors.auth https://docs.djangoproject.com/en/1.7/ref/templates/api/#django-contrib-auth-context-processors-auth上下文处理器,您可以访问auth.User
模板中的实例。
If TEMPLATE_CONTEXT_PROCESSORS
包含这个处理器,每个RequestContext
将包含这些变量:
user
– An auth.User
代表当前登录用户的实例
(或者 AnonymousUser 实例,如果客户端未登录)。
只需定义django.contrib.auth.context_processors.auth
在你的TEMPLATE_CONTEXT_PROCESSORS
设置然后使用{{user}}
在你的模板中。
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth", # define this in your settings
....
)
模板上下文处理器:
它是一个可调用元组用于填充上下文在
请求上下文。这些可调用对象将请求对象作为它们的
参数并返回要合并到的项目的字典
语境。
默认情况下,Django 1.6 设置了以下上下文处理器。
("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages")
模板中存在哪些变量?
您可以通过以下方式知道所有模板中存在哪些所有变量TEMPLATE_CONTEXT_PROCESSORS
设置。其中定义的每个上下文处理器都将一些变量包含到上下文中。例如,django.contrib.auth.context_processors.auth https://docs.djangoproject.com/en/1.7/ref/templates/api/#django-contrib-auth-context-processors-auth包括一个user
变量包含user
目的,django.core.context_processors.media https://docs.djangoproject.com/en/1.7/ref/templates/api/#django-core-context-processors-media上下文处理器包括MEDIA_URL
模板中的变量。
要检查使用不同上下文处理器的模板中可以访问的所有变量,请参阅此Django 文档链接。 https://docs.djangoproject.com/en/1.7/ref/templates/api/#subclassing-context-requestcontext
访问request
上下文中的对象
你可以加django.core.context_processors.request https://docs.djangoproject.com/en/1.7/ref/templates/api/#django-core-context-processors-request to TEMPLATE_CONTEXT_PROCESSORS
in settings.py
并访问request
您的上下文中的对象。
您还可以访问当前用户{{ request.user }}
。您必须显式添加此设置,因为默认情况下它不存在。
Add .request
上下文处理器TEMPLATE_CONTEXT_PROCESSORS
在您的设置中。
TEMPLATE_CONTEXT_PROCESSORS = (
....
`django.core.context_processors.request`,
)
编辑:(谢谢@Ozgur https://stackoverflow.com/users/793428/ozgur)
另外,添加AUTHENTICATION_MIDDLEWARE https://docs.djangoproject.com/en/1.8/ref/middleware/#module-django.contrib.auth.middleware在你的MIDDLEWARE_CLASSES
设置为user
属性中要设置的request
目的。它已从默认值中删除MIDDLEWARE_CLASSES
设置在姜戈 1.7。 https://docs.djangoproject.com/en/1.7/ref/settings/#middleware-classes
类 AuthenticationMiddleware
添加了user
属性,代表当前登录的用户,每个传入HttpRequest
object.
MIDDLEWARE_CLASSES = (
...
# explicitly add the 'AuthenticationMiddleware' class
'django.contrib.auth.middleware.AuthenticationMiddleware',
)