문제

기존 목록을 통해 루프를하고 쉼표로 구분 된 문자열을 만들고 싶습니다.
이 같은: my_string = 'stuff, stuff, stuff, stuff'

나는 이미 알고있다 loop.last, 나는 아래 코드에서 세 번째 줄을 만드는 방법을 알아야합니다.

{% 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 모든 종류의 정보에 대한 레코드이며, 나는 단지 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(', ') %}

그러나이를 위해 확장을 가져 오지 않으면서도 작동하지 않으며, 그 문서를 읽으면 두통이 생겼습니다. 그것은 그것을 가져올 곳이나 수입 명세서를 어디에 올릴 지 명시 적으로 말하지 않기 때문에, 나는 두 가지 악의 덜 가일 것이라고 생각했다.

또 다른 해킹은 이렇게 될 수 있습니다.

연결해야 할 문자열이 있습니다. 그래서 해당 배열을 사전에 추가 한 다음 작동하는 루프에 사용했습니다.

{% 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 %}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top