Django 1.4:如何在inclusion_tag中访问请求对象

时间:2012-06-29 23:15:27

标签: django django-templates

代码

@register.inclusion_tag('template.html', takes_context=True)
def include_client_side_bar(context):
    return {
        'STATIC_URL': settings.STATIC_URL,
        }

我的代码将是这样的,我想访问此函数中的request.user对象,但我无法得到它。

在调试器中,我可以看到这些变量。 enter image description here

据我所知,我已经在django 1.3中成功完成了这项工作,我是否错过了什么?

2 个答案:

答案 0 :(得分:1)

确保您已在TEMPLATE_CONTEXT_PROCESSORS设置中加入request context processor,并且您的视图以RequestContext呈现。

答案 1 :(得分:1)

如果请求密钥不存在,请尝试使用request = context.get('request', None)分配无值。

http://docs.python.org/library/stdtypes.html#dict.get

<强>更新

此外,您可以将用户传递给inclus_tag,类似

# In your template_tag
@register.inclusion_tag('template.html', takes_context=True)
def include_client_side_bar(context, user):
    if user:
         pass # do something
    return {
        'STATIC_URL': settings.STATIC_URL,
    }

# in your template
{% include_client_side_bar user=request.user %}