Python HTML 模板三元运算符

Python HTML template ternary operator

我遇到过不同的 python 三元运算符,例如:

a if b else 0

但是当我试图将它包含在 Django HTML 模板中时它不起作用

{% a if b else 0 %}

这是我将要使用但不起作用的确切代码:

{% 'error' if form.title.errors else '' %}

{% form.title.errors ? 'error' : '' %}

我不喜欢做平常的事情

{% if form.title.errors %}error{% endif %}

因为在我看来它看起来很笨重,尤其是如果我添加一个 else 语句。

有什么建议吗?还是我应该坚持下去?

您可以通过使用 yesno 过滤器 (documentation) 或多或少获得您想要的行为:

{{ form.title.errors|yesno:"errors," }}

在Django中,templatetags只支持{% if %}{% else %}{% endif %}。如果您不想使用:

{% if form.title.errors %}error{% endif %}

你可以试试:

{{ error|default:'' }}

django 模板中的测试如下:

...from django.template import Context, Template
...from django.conf import settings
...settings.configure()
...t = Template("My name is: {{ name|default:'anonymous' }} ")

如果默认:

...t.render(Context({}))

会 return:

'My name is anonymous '

如果有姓名:

...t.render(Context({"name": "John"}))

结果:

'My name is John '

阅读更多:https://docs.djangoproject.com/en/1.9/ref/templates/