将 request.user 传递给 Django 中的模板

Posted

技术标签:

【中文标题】将 request.user 传递给 Django 中的模板【英文标题】:Passing request.user to template in Django 【发布时间】:2011-11-20 04:42:37 【问题描述】:

是否有另一种方法可以通过不从视图中传递 request.user 来获取它?我认为将视图中所有函数的 request.user 传递给模板是非常错误的。模板是否有任何方法或方式可以获取数据库中的用户或任何对象?

【问题讨论】:

【参考方案1】:

默认情况下(我说的是 Django 1.3 版),您不需要更改 TEMPLATE_CONTEXT_PROCESSORS。因为default value 已经包含 *django.contrib.auth.context_processors.auth*。

所以对于您的问题:默认情况下,您应该能够在模板中使用 usermessagesperms 变量。例如:

User: user.username
% if perms.appname.permname %
  ... do something usefull ...
% endif %

【讨论】:

噢,我明白了。对不起,我是菜鸟。数据库中的对象怎么样?有没有办法让模板获取? 我不确定您所说的数据库中的对象是什么意思。如果你有模型(model.py 中的类)并且想要显示它,你可以使用generic views。 我有一个名为 SchoolSetting 的模型,它总是包含 1 个或多个对象。我想获取第一个对象(SchoolSetting.objects.all()[0])并将其放入template_context_processors的默认值中 没关系,已经知道了***.com/questions/2246725/… 如果您只想从数据库中获取一个对象,您应该使用 SchoolSetting.objects.get(pk=X),其中 X 是所需对象的 ID。【参考方案2】:

Context processors.

【讨论】:

以上是关于将 request.user 传递给 Django 中的模板的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest 框架:将查询集传递给 Response()

Django 3:创建 CRUD 表模板(将上下文变量传递给 HTML)

使用django时如何在ajax调用中传递request.user?

Django:request.user.user_permissions 总是无

Django - 将变量从基于类的视图传递到模板

将参数传递给FormView Django中的表单