Django 模板三元运算符
我想知道是否有一个三元运算符(条件?真值:假值)可以在 Django 模板中使用。我看到有一个 python 的(true-value if condition else false-value),但我不确定如何在 Django 模板中使用它来显示由其中一个值给出的 html。有什么想法吗?
I was wondering if there was a ternary operator (condition ? true-value : false-value) that could be used in a Django template. I see there is a python one (true-value if condition else false-value) but I'm unsure how to use that inside a Django template to display the html given by one of the values. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用 yesno 过滤器:
您可以在此处了解更多信息
You can use the yesno filter:
You can learn more here
为什么模板中需要三元运算符?
{% if %}
和{% else %}
就是您所需要的。或者您可以尝试使用
firstof
标记:它输出 var1、var2 或 var3 中第一个计算结果为 True 的值。
Why would you need a ternary operator within a template?
{% if %}
and{% else %}
are all you need.Or you could try the
firstof
tag:which outputs the first one of var1, var2 or var3 which evaluates to a True value.
只是因为这里还没有提到它们:内置模板标签
default
和default_if_none
在简单的情况下可能很有用:https://docs.djangoproject.com/en/1.9/ref/模板/内置/#default
Just because they haven't been mentioned here yet: the built in template tags
default
, anddefault_if_none
can be useful in simple circumstances:https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default
我刚刚将 Django 的三元运算符实现为标签,请参阅 https://github.com/ alexei/django-template-extensions
您可以将其用作:
或者:
我发现它比 yesno 过滤器更有意义,尽管它实际上并不那么 Pythonic。
I've just implemented the ternary operator for Django as a tag, see https://github.com/alexei/django-template-extensions
You can use it as:
Or:
I figured out that it makes more sense than the
yesno
filter, even though it's really not that Pythonic.你不知道。 Django
{% if %}
模板标签才刚刚开始支持==
、and
等。{% if cond %} {% else %}{% endif %}
与目前的情况一样紧凑。You don't. The Django
{% if %}
templatetag has only just started supporting==
,and
, etc.{% if cond %}{% else %}{% endif %}
is as compact as it gets for now.我想知道 python 和/或技巧是否有效?
其行为类似于三元运算符 - 如果条件计算结果为 True,则输出 true_value,否则输出 false_value。
I wonder if the python and/or trick would work?
behaves a like the ternary operator - outputs true_value if condition evaluates to True, and false_value if not.