Django 模板三元运算符

发布于 2024-09-07 05:33:27 字数 153 浏览 9 评论 0原文

我想知道是否有一个三元运算符(条件?真值:假值)可以在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

執念 2024-09-14 05:33:27

您可以使用 yesno 过滤器:

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

您可以在此处了解更多信息

You can use the yesno filter:

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

You can learn more here

一世旳自豪 2024-09-14 05:33:27

为什么模板中需要三元运算符? {% if %}{% else %} 就是您所需要的。

或者您可以尝试使用 firstof 标记:

{% firstof var1 var2 var3 %}

它输出 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:

{% firstof var1 var2 var3 %}

which outputs the first one of var1, var2 or var3 which evaluates to a True value.

没︽人懂的悲伤 2024-09-14 05:33:27

只是因为这里还没有提到它们:内置模板标签 defaultdefault_if_none 在简单的情况下可能很有用:

默认

如果 value 的计算结果为 False,则使用给定的默认值。否则,使用该值。

例如:

{{ value|default:"nothing" }}

如果 value 为“”(空字符串),则输出将不会为任何内容。

default_if_none

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

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

例如:

{{ value|default_if_none:"nothing" }}

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

https://docs.djangoproject.com/en/1.9/ref/模板/内置/#default

Just because they haven't been mentioned here yet: the built in template tags default, and default_if_none can be useful in simple circumstances:

default

If value evaluates to False, uses the given default. Otherwise, uses the value.

For example:

{{ value|default:"nothing" }}

If value is "" (the empty string), the output will be nothing.

default_if_none

If (and only if) value is None, uses the given default. Otherwise, uses the >value.

Note that if an empty string is given, the default value will not be used. Use >the default filter if you want to fallback for empty strings.

For example:

{{ value|default_if_none:"nothing" }}

If value is None, the output will be the string "nothing".

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

伪装你 2024-09-14 05:33:27

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

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

或者:

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

我发现它比 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:

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

Or:

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

I figured out that it makes more sense than the yesno filter, even though it's really not that Pythonic.

凉城凉梦凉人心 2024-09-14 05:33:27

你不知道。 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.

感情洁癖 2024-09-14 05:33:27

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

condition and true_value or false_value

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

I wonder if the python and/or trick would work?

condition and true_value or false_value

behaves a like the ternary operator - outputs true_value if condition evaluates to True, and false_value if not.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文