0

代码

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

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

在调试器中,我可以看到这些变量。 在此处输入图像描述

据我所知,我在 django 1.3 中成功地做到了这一点,我错过了什么吗?

4

2 回答 2

1

确保您已在设置中包含请求上下文处理器TEMPLATE_CONTEXT_PROCESSORS,并且您的视图使用RequestContext.

于 2012-06-30T02:46:37.873 回答
1

request = context.get('request', None)如果请求键不存在,请尝试分配 None 值。

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

更新:

您也可以通过类似这样的方式将用户传递给包含标签

# 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 %}
于 2012-06-30T03:33:41.627 回答