82

既存のリストをループして、カンマ区切りの文字列を作成したいだけです。
このようなもの:my_string = 'stuff, stuff, stuff, stuff'

についてはすでに知っていloop.lastますが、コードの下の 3 行目を WORK にする方法を知る必要があります。

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
4

5 に答える 5

123

が文字列のリストである場合stuffs、これだけで機能します。

{{ stuffs|join(", ") }}

joinフィルターのドキュメント、および一般的なドキュメントのフィルターを参照してください。

ps

より読みやすい方法

{{ my ~ ', ' ~ string }}
于 2010-01-14T03:22:28.967 に答える
72

+すべての値が文字列であることがわかっている場合に使用できます。Jinja は、~すべての値が最初に文字列に変換されるようにする演算子も提供します。

{% set my_string = my_string ~ stuff ~ ', '%}
于 2019-03-16T00:13:08.610 に答える
10

残念ながら、単純化しようとして行き過ぎました。実際にstuffsはあらゆる種類の情報の記録です。ID が必要なだけです。

stuffs = [[123, first, last], [456, first, last]]

my_stingなりたい

my_sting = '123, 456'

元のコードは次のようになっているはずです。

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff.id + ', '%}
{% endfor%}

考えてstuffsみれば、おそらく辞書ですが、要点はわかります。

はい、joinフィルターを見つけました。次のようにアプローチするつもりでした。

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

しかし、追加は拡張機能をインポートしないと機能せず、そのドキュメントを読んで頭が痛くなりました。どこからインポートするか、どこに import ステートメントを配置するかについては明示的に述べていません。

于 2010-01-14T13:51:14.497 に答える
2

ちょうど別のハックは、このようなことができます.

連結する必要がある文字列の配列があります。そのため、その配列を辞書に追加してから、 for ループ内で使用しました。

{% set dict1 = {'e':''} %}
{% for i in list1 %}
{% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %}
{% endfor %}
{% set layer_string = dict1['e'] %}
于 2016-07-19T18:36:44.360 に答える