有没有办法为模板标签提供两个以上的参数?
我能做到:
val1|my_function:val2
但是val3去了哪里?
我试过
val1|my_function:val2,val3
编辑:val1,val2,val3是动态的,这意味着我可以像{{val2}}
那样访问它们答案 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