Django模板(DTL)中多个变量之间的分隔符

时间:2018-03-20 14:03:34

标签: django django-templates

在我的$targetDir = 'D:\Testfolder\_dn' Get-ChildItem -Recurse -Filter *.txt | Select-Object -ExpandProperty DirectoryName -Unique | Move-Item -Destination $targetDir -Recurse -Container 模板中给出三个或更多变量,确保两个变量之间的交互总是最方便的方法是什么?

DTL

预期:

<div>{{ person.name }} · {{ person.phone }} · {{ person.city }}</div>

有没有一种简单的方法可以通过内置功能解决这个问题?我尽量避免编写自定义<div>John · 1234567 · New York</div> <!-- {{ person.city }} is null or empty--> <div>John · 1234567</div> 过滤器/模板标记。

2 个答案:

答案 0 :(得分:1)

您无法在Django模板语言中轻松完成此操作。从您的视图中传递非空值列表,例如["John", "1234567"],或撰写自定义标记或过滤条件,以便您可以执行{% interpunct person.name person.phone person.city %}{{ person|display_person }}之类的操作。

答案 1 :(得分:0)

为此,您可以(ab)使用cycle标签。将其放在每个列表项的前面,然后使用它在第一次通过时不发出任何内容,然后再使用分隔符。在for循环中使用非常简单。在外部使用需要这种模式:

{% cycle '' '|' '|' '|' as itemsep silent %}
{% if foo %}
{{ itemsep }}{% cycle itemsep %}
Foo!
{% endif %}
{% if bar %}
{{ itemsep }}{% cycle itemsep %}
Bar!
{% endif %}
{% if foobar %}
{{ itemsep }}{% cycle itemsep %}
FooBar!
{% endif %}

或者,仅使用额外的silent

来错过''的复杂性
{% cycle '' '' '|' '|' '|' as itemsep %}
{% if foo %}
{% cycle itemsep %}
Foo!
{% endif %}
...