我遇到过不同的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语句。
有什么建议吗?或者我应该坚持下去?
答案 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 '