Jinja中的字符串连接

Kac*_*ser 43 string jinja2

我只想循环遍历现有列表并从中创建逗号分隔的字符串.
像这样的东西:my_string = 'stuff, stuff, stuff, stuff'

我已经知道了loop.last,我只需要知道如何使我的代码中的第三行在WORK下面.

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
Run Code Online (Sandbox Code Playgroud)

ber*_*nie 69

如果stuffs是字符串列表,那么这将起作用:

{{ stuffs|join(", ") }}
Run Code Online (Sandbox Code Playgroud)

链接到文档.

  • 记得用〜代替+ [就像这里说的那样](http://jinja.pocoo.org/docs/templates/#other-operators) (10认同)

小智 18

+如果您知道所有值都是字符串,则可以使用。Jinja还提供了~运算符,该运算符将确保所有值都首先转换为字符串。

{% set my_string = my_string ~ stuff ~ ', '%}
Run Code Online (Sandbox Code Playgroud)


Kac*_*ser 8

我的不好,在试图简化它时,我走得太远了,实际上stuffs是各种信息的记录,我只想要其中的id.

stuffs = [[123, first, last], [456, first, last]]
Run Code Online (Sandbox Code Playgroud)

我想my_sting成为

my_sting = '123, 456'
Run Code Online (Sandbox Code Playgroud)

我原来的代码应该是这样的:

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff.id + ', '%}
{% endfor%}
Run Code Online (Sandbox Code Playgroud)

考虑它,stuffs可能是一本字典,但你得到了要点.

是的我找到了join过滤器,并且会像这样接近它:

 {% set my_string = [] %}
 {% for stuff in stuffs %}
 {% do my_string.append(stuff.id) %}
 {% endfor%}
 {%  my_string|join(', ') %}
Run Code Online (Sandbox Code Playgroud)

但是如果没有导入扩展来执行它,附加功能就无法工作,阅读该文档会让我头疼.它没有明确说明从哪里导入它,甚至没有在哪里输入import语句,所以我认为找到一种方法来连接将是两个邪恶中较小的一个.

  • 从2.6开始,您可以在联接筛选器中选择一个属性.所以你可以{{stuffs.join(',',attribute ='id')}}查看http://jinja.pocoo.org/docs/templates/#join (6认同)

小智 5

如果您不能只使用过滤器连接而是需要对数组的条目执行一些操作:

{% for entry in array %}
User {{ entry.attribute1 }} has id {{ entry.attribute2 }}
{% if not loop.last %}, {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)