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 '
我遇到过不同的 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 '