django-如何将多个值传递给templatetag

django-如何将多个值传递给templatetag,django,templatetag,Django,Templatetag,我正在尝试将多个参数传递给我的模板标记: @register.filter def val_color(val, min_val): if val >= min_val: return 'red' return 'black' 模板: {% for x in data.vals %} <font color="x|data.min_val|val_color">x</font> {% endfor %} {data.val

我正在尝试将多个参数传递给我的模板标记:

@register.filter
def val_color(val, min_val):
    if val >= min_val:
        return 'red'
    return 'black'
模板:

{% for x in data.vals %}
    <font color="x|data.min_val|val_color">x</font>
{% endfor %}
{data.vals%中x的%
x
{%endfor%}
这种方法行不通。 有什么办法吗?
请注意,如果我必须将x数字转换为具有值和最小值属性的对象,这将太麻烦,因此我希望有一个适当的解决方案来解决此问题。

不清楚您要做什么。在您的函数中,我看不到
min\u val
的任何用法

但让我举一个过滤器如何工作的例子。 下面是过滤器标签的示例

@register.filter
def keyvalue(dict, key):
    """Filter to fetch a dict's value by a variable as key"""
    return dict.get(key, '')
过滤器标签的使用

{{ weekday_dict|keyvalue:var }}
这里的工作日dict是dict,
'var'
是我想要访问的键。在keyvalue筛选器中,标记weekday_dict是第一个参数dict,var是第二个参数

要传递多个参数,可以引用

简而言之,您不能轻易地在筛选器标记中传递多个参数。您可以将其作为逗号分隔的值进行传递,也可以使用多个过滤器进行传递,这些过滤器由

更新: 正如我在你最新的问题中所看到的。您不需要传递多个参数 您的过滤器标记定义为:

@register.filter
def val_color(val, min_val):
    if val >= min_val:
        return 'red'
    return 'black'
要使用此标记,可以将模板代码更新为

{% for x in data.vals %}
    <font color="{{ x|val_color:data.min_val }}">{{ x }}</font>
{% endfor %}
{data.vals%中x的%
{{x}
{%endfor%}

您还可以将一些默认值设置为第二个参数,然后不需要为默认情况传递最小值。在使用过滤器之前,也不要忘记加载过滤器。有关标签的更多详细信息,请参阅

可能的感谢副本。上面的解决方案有效。我还发现了“简单标签”,这是为了这个,而不是使用一个过滤器,我使用了,这也工作。
{% for x in data.vals %}
    <font color="{{ x|val_color:data.min_val }}">{{ x }}</font>
{% endfor %}