Django模板三元运算符

时间:2010-06-24 13:05:54

标签: python django templates ternary-operator

我想知道是否有一个可以在Django模板中使用的三元运算符(条件?true-value:false-value)。我看到有一个python(真值,如果条件其他假值)但我不确定如何在Django模板中使用它来显示由其中一个值给出的html。有什么想法吗?

5 个答案:

答案 0 :(得分:72)

您可以使用yesno过滤器:

{{ value|yesno:"yeah,no,maybe" }}

https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#yesno

答案 1 :(得分:30)

为什么在模板中需要三元运算符?您只需要{% if %}{% else %}

或者你可以试试firstof标签:

{% firstof var1 var2 var3 %}

输出var1,var2或var3中的第一个,其值为True值。

答案 2 :(得分:18)

仅仅因为此处尚未提及:内置模板代码defaultdefault_if_none在简单环境中非常有用:

  

默认

     

如果value的计算结果为False,则使用给定的默认值。否则,使用值。

     

例如:

     

{{ value|default:"nothing" }}

     

如果value为“”(空字符串),则输出将为空。

     

default_if_none

     

如果(且仅当)值为None,则使用给定的默认值。否则,使用>值。

     

请注意,如果给出空字符串,则不会使用默认值。如果要为空字符串回退,请使用>默认过滤器。

     

例如:

     

{{ value|default_if_none:"nothing" }}

     

如果value为None,则输出将为字符串“nothing”。

https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default

答案 3 :(得分:4)

你没有。 Django {% if %}模板标签刚刚开始支持==and等。{% if cond %}{% else %}{% endif %}与现在一样紧凑。

答案 4 :(得分:1)

我想知道python和/或技巧是否有效?

condition and true_value or false_value

的行为类似于三元运算符 - 如果条件计算结果为True,则输出true_value,否则输出false_value。