Python 从额外模板标记文件访问登录用户

Python 从额外模板标记文件访问登录用户,python,django,Python,Django,我尝试创建一个django模板标记,其中需要登录的用户,例如。 @register.filter() def foo(id): 返回Bar.objects.get(creator=request.user.id) 但是我得到了一个NameError,说请求没有定义。有没有办法访问app_extras文件中的请求对象?您可以使用简单的标签,而不是接受“takes_context”参数的过滤器 @register.simple_tag(takes_context=True) def foo(co

我尝试创建一个django模板标记,其中需要登录的用户,例如。

@register.filter()
def foo(id):
返回Bar.objects.get(creator=request.user.id)


但是我得到了一个NameError,说请求没有定义。有没有办法访问app_extras文件中的请求对象?

您可以使用简单的标签,而不是接受“takes_context”参数的过滤器

@register.simple_tag(takes_context=True)
def foo(context):
    user = context['request'].user
    return Bar.objects.get(creator=user)

请记住,“context”必须是第一个参数。

您可以使用简单的\u标记,而不是接受“takes\u context”参数的过滤器

@register.simple_tag(takes_context=True)
def foo(context):
    user = context['request'].user
    return Bar.objects.get(creator=user)

请记住,“context”必须是第一个参数。

对于过滤器来说,这似乎是一个奇怪的用法。你确定你不想要标签吗?不管怎样,你在这里也不需要,因为你可以在模板中执行
request.user.bar\u set.all
。你到底想做什么?这似乎是一个奇怪的过滤器使用。你确定你不想要标签吗?不管怎样,你在这里也不需要,因为你可以在模板中执行
request.user.bar\u set.all
。你到底想做什么?
@register.simple_tag(takes_context=True)
def foo(context):
    user = context['request'].user
    return Bar.objects.get(creator=user)