Django模板默认过滤器,具有可为null的布尔值



我需要将一个布尔变量传递给模板。要将其转换为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编写一个简单的标记。我认为不可能编写一个过滤器来区分缺失的变量和空字符串。

相关内容

最新更新