我正在设置一个模板,我希望默认值是常量字符串和变量id值的组合。所需的HTML输出类似于:
<span id="id1234" class="foo">
Click <a href="/images/img1234.jpg">here to view image</a>.
</span>
在span
的模板代码中,我想要像:
<span id="{{ spanid|default:'id'object.id }}" class="foo">
同样,a
标记将使用:
<a href="/images/{{ image_file|default:'img'object.id'.jpg'"> here to view...
这不起作用,有没有办法在django模板和default
过滤器的语法中执行此操作?
答案 0 :(得分:4)
你做不到。但是,default
仅仅是一种捷径。在这种情况下,快捷方式不起作用,但较长的表单将允许您执行所需操作:
{% if image_file %}{{ image_file }}{% else %}img{{ object.id }}.jpg{% endif %}
答案 1 :(得分:1)
@Chris Pratt的答案是一个不错的解决方法,但是使用默认过滤器无法实现这一点是不准确的。
在我的项目中,我只是使用“添加”过滤器将字符串连接到变量值,如下所示:
{{ instance.image.url|default:STATIC_URL|add:"img/icons/my-image.svg" }}
更新:很抱歉。经过更全面的测试,我发现此处介绍的解决方案实际上无效。我以为“添加”过滤器将应用于默认值,但最终将其应用于表达式的第一部分解析为的任何值。
因此,如果{{ instance.image.url }}
处有一个值,则“ img / icons / my-image.svg”会被串联起来,这会破坏它。