在Django模板中,我们可以使用with
:
{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}
我们可以将with
与if
我试过了:
{% with a={%if product.url %}product.url{%else%}default{%endif %} %}
但是我收到了错误:
Could not parse the remainder: '{%if' from '{%if'
答案 0 :(得分:1)
至少Django模板语言非常愚蠢 - 逻辑不应该在模板中发生 - 所以想想模板标签=>注册你自己的并尝试在视图中移动逻辑......
在这种情况下,问题可能是您尝试这样做的原因?
可能在您需要的地方直接使用变量可能更容易,如果它是None,则使用默认模板标记/函数:
{{ product.url|default_if_none:default }}
但无论如何,您的解决方案可能如下所示:
{% with a=default %}
{% if product.url %}
{% update_variable product.url as a %}
{% endif %}
{% endwith %}
您的模板标记应如下所示:
@register.simple_tag
def update_variable(value):
return value
答案 1 :(得分:1)
可能有用的标记过滤器:
from django import template
register = template.Library()
@register.simple_tag
def fallback(value, default_value):
if not value:
return default_value
return value
在模板中,您需要加载文件
{% load app_containing_tag_filters %}
{% with a = product.url|fallback:default %}
stuffs here
{% endwith %}