Pergunta

Eu só quero percorrer uma lista existente e fazer uma string delimitada por vírgula.
Algo assim: my_string = 'stuff, stuff, stuff, stuff'

Eu já sei sobre loop.last, Só preciso saber como fazer a terceira linha no meu código abaixo funcionar.

{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
Foi útil?

Solução

Se stuffs é uma lista de cordas, apenas isso funcionaria:

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

Link para documentação.

Outras dicas

Você pode usar + Se você conhece todos os valores são strings. Jinja também fornece o ~ Operador, que garantirá que todos os valores sejam convertidos para a string primeiro.

{% set my_string = my_string ~ stuff ~ ', '%}

Meu mal, ao tentar simplificar, fui longe demais, na verdade stuffs é um registro de todos os tipos de informações, eu só quero o ID nele.

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

Eu quero my_sting ser

my_sting = '123, 456'

Meu código original deveria ter sido assim:

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

A pensar nisso, stuffs é provavelmente um dicionário, mas você entende a essência.

Sim eu encontrei o join filtrar, e ia abordar assim:

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

Mas o anexo não funciona sem importar as extensões para fazê -lo, e ler essa documentação me deu dor de cabeça. Não diz explicitamente onde importando -o ou mesmo de onde você colocaria a declaração de importação, então achei que encontrar uma maneira de concatar seria a menor dos dois males.

Apenas mais um hack pode ser assim.

Eu tenho uma variedade de cordas que preciso concatenar. Então eu adicionei essa matriz no dicionário e depois a usei para dentro do loop, que funcionou.

{% set dict1 = {'e':''} %}
{% for i in list1 %}
{% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %}
{% endfor %}
{% set layer_string = dict1['e'] %}

Se você não pode usar apenas o filtro, mas precisar executar algumas operações na entrada da matriz:

{% for entry in array %}
User {{ entry.attribute1 }} has id {{ entry.attribute2 }}
{% if not loop.last %}, {% endif %}
{% endfor %}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top