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

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

【问题讨论】:

    标签: django django-templates django-views


    【解决方案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的默认值中
    • 没关系,已经知道了stackoverflow.com/questions/2246725/…
    • 如果您只想从数据库中获取一个对象,您应该使用 SchoolSetting.objects.get(pk=X),其中 X 是所需对象的 ID。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2019-09-29
      • 2020-05-08
      • 2020-12-19
      • 2014-11-30
      • 2019-04-03
      • 2012-03-02
      • 1970-01-01
      • 2016-11-17
      相关资源
      最近更新 更多