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
仅仅因为他们还没有在这里提到:内置的模板标签default
和default_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 %}
我发现它比yesno
filter更有意义,尽pipePythonic实际上并不是这样。
我想知道这个python和/或者trick会起作用吗?
condition and true_value or false_value
performance得像三元运算符 – 如果条件评估为True,则输出true_value,否则输出false_value。