Python HTML模板三元运算符

时间:2016-12-20 07:43:13

标签: python html django if-statement 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语句。

有什么建议吗?或者我应该坚持下去?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

在Django中,模板标签只支持{% 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({}))

它将返回:

'My name is anonymous '

如果有名字:

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

结果:

'My name is John '

了解详情:https://docs.djangoproject.com/en/1.9/ref/templates/