Django模板三元运算符
我在想,Django 模板里有没有一种三元运算符(条件 ? 真值 : 假值)可以用。虽然我知道 Python 里有一个(真值 if 条件 else 假值),但我不太确定怎么在 Django 模板里用它来显示某个值对应的 HTML。有没有什么想法?
6 个回答
30
这里提到的内置模板标签 default
和 default_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
46
为什么在模板中需要用到三元运算符呢?其实只用 {% if %}
和 {% else %}
就够了。
或者你也可以试试 firstof
这个标签:
{% firstof var1 var2 var3 %}
它会输出 var1、var2 或 var3 中第一个为真的值。