django中的模板如何获取用户对象?

2023-12-28

模板如何获取用户对象?

换句话说,渲染过程中究竟是什么过程将用户对象传递给模板?

模板中还可以访问哪些内容?


使用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',
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django中的模板如何获取用户对象? 的相关文章

随机推荐

  • 有没有办法更新工作项的“部署”部分?

    有谁知道更新工作项的 部署 部分的方法 我还没有找到任何可以执行此操作的任务的工作示例 cli 命令或 API 调用 这似乎是Azure DevOps Releases产品的独有功能 但我希望能够使用多阶段 YAML 管道来实现类似的东西
  • 在 Python 中定义带有可选参数的类

    class class1 def setdata self value1 value2 self data value1 value2 def display self print self data 对于上面的代码 当我使用它的时候 它需
  • C# - SqlDataReader 和序列化

    SqlDataReader 可以传递到会话或发送到客户端吗 例如 如果我从数据库中检索了一些行 并希望将此数据发送到另一台客户端计算机 我可以简单地通过在服务器上使用 json 序列化它然后在客户端上反序列化来完成此操作吗 不 只有数据 没
  • 在没有 epmd 的情况下启动 erlang VM

    我正在尝试与 erlang 虚拟机分开启动 epmd 以便对连接处理进行监控 这工作得很好 除了虚拟机在 epmd 之前启动的情况 有没有办法让 erlang 虚拟机启动而不自行启动 epmd 从 Erlang OTP 19 0 开始 有a
  • getPathValue() 函数用于具有数组和打包 JSON 的深层对象

    有关背景 请参考这个问题 访问嵌入式 JSON 的深层对象成员 https stackoverflow com q 53819904 3566998 那里提供的解决方案与键值中包含的打包 JSON 配合得很好 但是 它们不处理 JSON 具
  • 从静态方法获取应用程序实例

    在 Android 中使用静态方法获取应用程序继承者的实例是否正确 我在一些开源项目中看到过这种方法 VLC https github com mstorsjo vlc android blob master vlc android src
  • 如何在 Docker 镜像中安装 grails?

    我正在致力于将基于 grails 构建的现有应用程序容器化 我已经能够在一段时间内成功构建该项目debian stretch图像 是的 我知道那很旧 但该项目最初是用几乎所有内容的旧版本构建的 gradle maven and defaul
  • Java NIO 窗口实现

    在使用 NIO 2 AIO 功能进行项目时 我查看了 旧的 NIO 选择器实现 发现在 Windows 上使用了默认的选择函数 由于内部实现不良 该函数在 Windows 上根本无法扩展 大家都知道 在 Windows 上 IOCP 是唯一
  • 将 App 与 Epub 格式关联

    我无法让我的应用程序在移动设备上注册 epub 文件 我的 android 清单中有一组意图过滤器 但它仍然无法使用 sd 卡上的 epub 文件打开 当我经过File Explorer应用程序 它显示该文件 但是当我单击它时 它显示 系统
  • RxJS 新手,范围不是函数

    我正在尝试创建一个简单的 TypeScript 文件来使用 RxJS 这是我所做的 npm 安装 rxjs 引用 跟踪器和系统js 在我的 索引 html 并创建了一个 test ts 文件如下 import Observable from
  • C 字符串比较与哈希比较

    我需要将一个字符串与 c 中的多个其他常量字符串进行比较 我很好奇哪个更快 对我要比较的字符串进行散列并将其与所有其他常量字符串散列进行比较 或者只是将字符串作为字符串进行比较 先感谢您 谢谢你的回答 我会做很多比较 谁能给我一个好的 快速
  • 价值迟到? “下面的值是刚刚评估的”

    let currComp this let projects let dataArr async function getData let getProject await axios get url auth username usern
  • 在ios中对简单字符串进行QRCode编码

    我已经从下载了示例代码github https github com myang git QR Code Encoder for Objective C用于 QRCode 编码 它工作正常 并为我指定的字符串生成带有 QRCode 的图像
  • 生成圆内的随机点(均匀)

    我需要在半径圆内生成均匀随机点R 我意识到 只需在区间 0 2 中选择均匀随机的角度 并在区间 0 2 中选择均匀随机的半径即可 R 我最终会得到更多朝向中心的点 因为对于两个给定的半径 较小半径中的点将比较大半径中的点彼此更接近 I fo
  • send_file 结束后清理 /tmp

    我有一个Redmine插件 我在 tmp 中创建一个临时文件 然后使用 File open 发送它 我想在用户下载临时文件后删除它 我能怎么做 我的代码 在控制器中 File open filelocation r do file send
  • 如何知道 scikit-learn 混淆矩阵标签顺序并更改它

    存在 27 个类别的多分类问题 y predict 0 0 0 20 26 21 21 26 y true 1 10 10 20 26 21 18 26 名为 answer vocabulary 的列表存储了每个索引对应的 27 个单词 a
  • 在php中将DateInterval对象转换为秒

    datetime1 date create 2009 10 11 datetime2 date create 2009 10 13 interval date diff datetime1 datetime2 我如何转换上面的内容 inte
  • 创建 JSON 时,vividsolutions JTS 中的几何图形失败

    朋友们 我在应用程序中使用vividsolutions 的库JTS 1 13 来处理点和多边形 但是当我尝试将几何对象转换为JSON 时 我的应用程序失败了 这是我的来源 RequestMapping value test point me
  • 在 django 1.10 中将 trigram 与排名搜索相结合

    我们在 django 1 10 中进行搜索 我们需要使用三元组搜索进行用户排名搜索 我们的代码是这样的 def get queryset self search self request GET get text vector Search
  • django中的模板如何获取用户对象?

    模板如何获取用户对象 换句话说 渲染过程中究竟是什么过程将用户对象传递给模板 模板中还可以访问哪些内容 使用django contrib auth context processors auth https docs djangoproje