Django模板三元运算符

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

为什么你需要一个模板内的三元运算符? {% if %}{% else %}是你所需要的。

或者你可以尝试第一个标签:

 {% firstof var1 var2 var3 %} 

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

你可以使用yesnofilter:

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

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

仅仅因为他们还没有在这里提到:内置的模板标签defaultdefault_if_none可以在简单的情况下有用:

默认

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

例如:

{{ value|default:"nothing" }}

如果值是“”(空string),输出将是什么。

default_if_none

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

请注意,如果给出了空string,则不会使用默认值。 使用>默认filter,如果你想回退空string。

例如:

{{ value|default_if_none:"nothing" }}

如果值为None,则输出将是string“nothing”。

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

你没有。 Django {% if %} templatetag只是刚刚开始支持== ,等等。 {% if cond %}{% else %}{% endif %}就像现在一样紧凑。

我刚刚实现了Django的三元运算符作为标记,请参阅https://github.com/alexei/django-template-extensions您可以使用它作为:;

 {% ?: exp1 exp2 exp3 %} {% ?: exp1 exp2 %} 

要么:

 {% iif exp1 exp2 exp3 %} {% iif exp1 exp2 %} 

我发现它比yesnofilter更有意义,尽pipePythonic实际上并不是这样。

我想知道这个python和/或者trick会起作用吗?

 condition and true_value or false_value 

performance得像三元运算符 – 如果条件评估为True,则输出true_value,否则输出false_value。