request.user在Django中引用了什么?

时间:2013-06-26 06:16:25

标签: python django email django-templates django-views

我对Django中 request.user 引用的内容感到困惑? 它是指 auth_user 表中的用户名字段还是引用用户模型实例?

我有这个疑问,因为我无法使用{{request.user.username}}{{user.username}}访问模板中的电子邮件字段。

所以我在视图文件中执行了以下操作:

userr = User.objects.get(username=request.user)

并将userr传递给模板,并将访问的电子邮件字段设为{{ userr.email }}

虽然它有效,但我希望对此有所了解。

4 个答案:

答案 0 :(得分:11)

request.user是用户模型对象。

如果未明确传递request,则无法在模板中访问请求对象。 如果要从模板访问用户对象,则应将其传递给模板或使用RequestContext。

答案 1 :(得分:10)

如果您的模板正在接收AnonymousUser,则无法找到对{{request.user.email}}的引用。以前,您必须询问{{request.user.is_authenticated }}

您必须检查django.core.context_processors.auth部分设置中是否包含TEMPLATE_CONTEXT_PROCESSORS上下文处理器。如果您使用的是Django 1.4或最新版本,则上下文处理器为django.contrib.auth.context_processors.auth。该上下文处理器负责在每个请求中包含用户对象。

答案 2 :(得分:2)

这取决于你设定的内容。

所以,最好使用

user = User.objects.get(username=request.user.username)

实际上,如果您将'django.core.context_processors.request'附加到TEMPLATE_CONTEXT_PROCESSORS

中的settings.py列表中,则无需定义此类变量

如果您在render

中使用views.py,则可以在模板中访问变量{{request.user.username}}

答案 3 :(得分:0)

request.user引用实际的用户模型实例。

request.user.FIELDNAME将允许您访问用户模型的所有字段