【问题标题】:Django {{ user }} does not return user object in templates without generic viewsDjango {{ user }} 不会在没有通用视图的模板中返回用户对象
【发布时间】:2011-11-04 15:50:35
【问题描述】:

如果来自通用视图的一些模板请求,我可以获得{{ user }},它将是经过身份验证的用户(例如我)的对象。

但如果我在没有通用视图的情况下工作,则使用普通视图 {{ user }} 不会返回我的对象​​。

为什么???

谢谢。

【问题讨论】:

    标签: django django-templates django-views


    【解决方案1】:

    因为你还没有将它包含在你的模板渲染上下文中。

    你需要使用类似的东西:

    def my_view(request, …):
        …
        return render_to_response("my_template.html", {
            …,
            "user": request.user,
        })
    

    【讨论】:

    • 没问题。如果您愿意,可以使用上下文处理器自动使user 可用(请参阅docs.djangoproject.com/en/dev/ref/templates/api)。
    • 我已经阅读了该文档,但还没有看到如何使“用户”在模板中自动可用。你知道有什么捷径吗?提前致谢!!!
    • @VitaliPonomar 你可能已经想通了,但我仍然在问你'django.contrib.auth.context_processors.auth' 在你的TEMPLATE_CONTEXT_PROCESSORS 中吗
    • {{ user }} 如果使用render_to_response,则在添加上下文处理器后仍然不可用。请务必查看 Catavaran 解决此问题的答案
    【解决方案2】:

    如果您使用的是render_to_response(),那么您需要在 RequestContext 实例中添加第三个参数:

    return render_to_response('my_template.html',
                              {'my_data', my_data},
                              context_instance=RequestContext(request))
    

    更多详情https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#django.shortcuts.render_to_response

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2011-03-06
      • 2017-03-28
      • 1970-01-01
      • 2017-04-30
      • 2020-07-05
      • 2014-07-10
      • 2017-01-25
      相关资源
      最近更新 更多