Django模板三元运算符

73 投票
6 回答
44602 浏览
提问于 2025-04-16 00:23

我在想,Django 模板里有没有一种三元运算符(条件 ? 真值 : 假值)可以用。虽然我知道 Python 里有一个(真值 if 条件 else 假值),但我不太确定怎么在 Django 模板里用它来显示某个值对应的 HTML。有没有什么想法?

6 个回答

30

这里提到的内置模板标签 defaultdefault_if_none 在一些简单的情况下会很有用:

default

这个标签的意思是:如果值是假的(比如空字符串、0等),就用你给的默认值。否则,就用这个值。

举个例子:

{{ value|default:"nothing" }}

如果值是 ""(空字符串),那么输出的结果就是“什么都没有”。

default_if_none

这个标签的意思是:只有当值是 None 的时候,才用你给的默认值。否则,就用这个值。

需要注意的是,如果值是空字符串,默认值就不会被使用。如果你想要在空字符串的情况下也使用默认值,可以用 default 标签。

举个例子:

{{ value|default_if_none:"nothing" }}

如果值是 None,输出的结果就是字符串“nothing”。

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

123

你可以使用yesno过滤器:

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

想了解更多信息,可以点击这里

46

为什么在模板中需要用到三元运算符呢?其实只用 {% if %}{% else %} 就够了。

或者你也可以试试 firstof 这个标签:

{% firstof var1 var2 var3 %}

它会输出 var1、var2 或 var3 中第一个为真的值。

撰写回答