Django标签:超过2个参数

时间:2013-01-30 14:07:41

标签: django django-templates

有没有办法为模板标签提供两个以上的参数?

我能做到:

val1|my_function:val2

但是val3去了哪里?

我试过

val1|my_function:val2,val3

编辑:val1,val2,val3是动态的,这意味着我可以像{{val2}}

那样访问它们

3 个答案:

答案 0 :(得分:1)

templatetag只接受一个参数。

有几种方法可以解决这个问题,但我会考虑是否值得,或者你是否可以改变你的逻辑。

参数必须是数字或字符串。

所以这将 NOT 工作:

val1|func:['a','b']
val1[func:{'a':'b'}
val1|func:('a','b')

这将有效:

val1|func:10
val1|func:10.2
val1|func:"10"

您可以做的是发送以结构化方式格式化的字符串:

val1|func:"['a','b']"

然后你可以创建解析它所需的数据类型,但这将是一个非常难看的解决方案。

更干净的解决方案是使用多个标签:

val1|func:'a'|func:'b'

答案 1 :(得分:0)

这是一个过滤器,过滤器只能带一个或两个参数。 Writing custom template filters。如果您想要一个可以带多个参数的标签,请查看Writing custom template tags

答案 2 :(得分:0)

对于你可以做的字符串:

val1|my_function:"val2,val3"

然后拆分:

@register.filter()
def my_funtion(val1, args):
    args = [x.strip() for x in args.split(',')]
    #do something
    return value