我需要将一个布尔变量传递给模板。要将其转换为js布尔值,您通常会执行以下操作:
{{ boolval|yesno:'true,false' }}
现在我的boolvar
可能不存在。在这种情况下,我需要它默认为true
,所以我正在尝试这个:
{{ boolval|default_if_none:'true'|yesno:'true,false' }}
出乎意料的是,这样做的结果是false
。
我正在尝试调试{{ boolval|default_if_none:'true' }}
生成的内容,但我遇到了语法错误。不确定发生了什么,但它肯定不会产生true
。
如何使用过滤器实现我所追求的行为?
在我看来,更简单直接的解决方案是{{ boolval|lower }}
。
没有额外的开销,工作正常。
default_is_none
仅在值为None
时使用给定值。如果模板上下文中缺少boolval
,则默认情况下它将计算为空字符串,这与None
不同。
如果您不能确保boolval
存在于模板上下文中,那么我建议您使用takes_context=True
编写一个简单的标记。我认为不可能编写一个过滤器来区分缺失的变量和空字符串。