将 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*。
所以对于您的问题:默认情况下,您应该能够在模板中使用 user、messages 和 perms 变量。例如:
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?