Ответ 1
Если stuffs
- список строк, это будет работать:
{{ stuffs|join(", ") }}
Ссылка к документации.
Я просто хочу пропустить существующий список и сделать из него строку с разделителями-запятыми.
Что-то вроде этого: my_string = 'stuff, stuff, stuff, stuff'
Я уже знаю о loop.last
, мне просто нужно знать, как сделать третью строку в моем коде ниже WORK.
{% set my_string = '' %}
{% for stuff in stuffs %}
{% set my_string = my_string + stuff + ', '%}
{% endfor%}
Если stuffs
- список строк, это будет работать:
{{ stuffs|join(", ") }}
Ссылка к документации.
Вы можете использовать +
, если знаете, что все значения являются строками. Jinja также предоставляет оператор ~
, который гарантирует, что все значения будут сначала преобразованы в строку.
{% set my_string = my_string ~ stuff ~ ', '%}
Мне плохо, пытаясь упростить его, я зашел слишком далеко, на самом деле stuffs
- это запись всех видов информации, мне просто нужен идентификатор.
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(', ') %}
Но приложение не работает без импорта расширений, чтобы сделать это, и чтение этой документации вызвало у меня головную боль. В нем явно не указано, куда его импортировать или даже куда вы поместите оператор импорта, поэтому я решил, что найти способ concat будет меньшим из двух зол.
Просто еще один хак может быть таким.
У меня есть массив строк, которые мне нужно объединить. Поэтому я добавил этот массив в словарь, а затем использовал его внутри цикла, который работал.
{% set dict1 = {'e':''} %}
{% for i in list1 %}
{% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %}
{% endfor %}
{% set layer_string = dict1['e'] %}
Если вы не можете просто использовать соединение фильтра, но вам нужно выполнить некоторые операции над записью массива:
{% for entry in array %}
User {{ entry.attribute1 }} has id {{ entry.attribute2 }}
{% if not loop.last %}, {% endif %}
{% endfor %}