不带参数的 django 过滤器

Bog*_*dan 5 django

我正在尝试编写一个自定义过滤器来检索然后在模板中使用的对象列表。到目前为止我已经得到:

@register.filter
def get_my_object_list(user):
   return some list after processing
Run Code Online (Sandbox Code Playgroud)

并在模板中:

{% for page in request.user|get_pages_with_no_menu %}
     Some rendering here.
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

现在这工作正常,这可能听起来很愚蠢,但我找不到解决方案。我真的不需要该过滤器中的用户,所以我不想有任何参数。这可能吗?如何从模板中调用它?

谢谢

Ber*_*ant 5

您实际上要寻找的不是模板过滤器,而是分配标签。它允许您为变量赋值,然后例如。迭代它:

@register.assignment_tag(takes_context=True)
def get_pages_with_no_menu(context):
    # do some fancy stuff here
    return pages_with_no_menu
Run Code Online (Sandbox Code Playgroud)

然后您可以在模板中使用它,例如:

{% get_pages_with_no_menu as pages %}
{% for page in pages %}
     Some rendering here.
{% endfor %}
Run Code Online (Sandbox Code Playgroud)