69

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

4

6 回答 6

107

您可以使用 yesno 过滤器:

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

你可以在这里了解更多

于 2011-05-22T16:37:37.427 回答
44

为什么需要在模板中使用三元运算符?{% if %}并且{% else %}是你所需要的。

或者你可以试试firstof标签:

{% firstof var1 var2 var3 %}

它输出 var1、var2 或 var3 中的第一个,其计算结果为 True 值。

于 2010-06-24T13:13:33.543 回答
26

只是因为这里还没有提到它们:内置的模板标签default,并且default_if_none在简单的情况下很有用:

默认

如果 value 评估为 False,则使用给定的默认值。否则,使用该值。

例如:

{{ value|default:"nothing" }}

如果 value 是 "" (空字符串),输出将是空的。

default_if_none

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

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

例如:

{{ value|default_if_none:"nothing" }}

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

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

于 2016-03-11T02:17:33.560 回答
5

你没有。Django{% if %}模板标签才刚刚开始支持==,and{% if cond %}{% else %}{% endif %},目前已经很紧凑了。

于 2010-06-24T13:15:09.863 回答
5

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

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

或者:

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

我发现它比yesno过滤器更有意义,即使它真的不是 Pythonic。

于 2012-10-10T22:04:14.217 回答
2

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

condition and true_value or false_value

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

于 2010-06-24T14:29:18.547 回答