我想知道是否有可以在 Django 模板中使用的三元运算符(条件?真值:假值)。我看到有一个 python (如果条件为真值,否则为假值),但我不确定如何在 Django 模板中使用它来显示由其中一个值给出的 html。有任何想法吗?
6 回答
为什么需要在模板中使用三元运算符?{% if %}
并且{% else %}
是你所需要的。
或者你可以试试firstof
标签:
{% firstof var1 var2 var3 %}
它输出 var1、var2 或 var3 中的第一个,其计算结果为 True 值。
只是因为这里还没有提到它们:内置的模板标签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
你没有。Django{% if %}
模板标签才刚刚开始支持==
,and
等{% 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
过滤器更有意义,即使它真的不是 Pythonic。
我想知道python和/或技巧是否有效?
condition and true_value or false_value
行为类似于三元运算符 - 如果条件评估为 True,则输出 true_value,否则输出 false_value。