2010-01-14 2 views
22

기존 목록을 반복하여 쉼표로 구분 된 문자열을 만들고 싶습니다. 이 같은
뭔가 : my_string = 'stuff, stuff, stuff, stuff'Jinja의 문자열 연결

내가 이미 알고있는 약 loop.last, 난 그냥 WORK 아래에있는 내 코드에서 세 번째 줄을 만드는 방법을 알 필요가있다. stuffs는 문자열 목록 인 경우

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

OK 원래의 코드 내가 작품을 게시 것을, 나는에서 {{}}에 있었다 {{%%} 대신 {{}}을 (를) 사용하여 실제 코드를 검색하고 최선의 방법으로 접근하여이를 수행 할 수있는 방법을 찾았습니다. } 내 좌절감에 빠져 들었다. 응답을 주셔서 감사합니다 – KacieHouser

답변

42

, 그냥이 작동합니다 :

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

Link를 문서.

+0

좋은 하나 - 난 워드 프로세서에서 이것을 찾을 수 없습니다. – doug

+6

+ [like said here] 대신 ~을 사용하십시오. (http://jinja.pocoo.org/docs/templates/#other-operators) – Josmar

3

나는 그것을 단순화하려고 노력하면서 실제로 너무 멀리 갔다. 실제로는 stuffs이 모든 종류의 정보를 기록하고있다. 나는 그저 이드를 원한다.

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

나는 내 원래의 코드는 다음과 같이 봤어야

my_sting = '123, 456' 

my_sting 원하는 :

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

그것에 대해 생각, stuffs 아마 사전,하지만 당신은 요점을 얻을 .

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

그러나 그것을 할 확장을 가져, 그 문서를 읽지 않고 작동하지 않습니다 APPEND 나에게 두통을했다 :

예 나는 join 필터를 발견하고, 이런 식으로 접근하려고 했어요 . 그것은 import 문을 어디에서 가져올 지, 심지어 import 문을 어디에 넣을 지 명시 적으로 밝히지 않았기 때문에, concat하는 방법을 찾는 것이 두 가지 중 적은 것이 더 적은 것이라고 생각했습니다.

+3

2.6 이후에 조인 필터에서 속성을 선택할 수 있습니다. 그래서 {{stuffs.join (',', attribute = 'id')}} 할 수 있습니다. http://jinja.pocoo.org/docs/templates/#join을 참조하십시오. – dmertl

0

또 다른 해킹이 이와 같을 수 있습니다.

나는 병합해야하는 문자열 배열을 가지고 있습니다. 그래서 그 배열을 사전에 추가 한 다음에 for 루프를 사용했습니다.

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

당신은 조인 필터를 사용하지만 배열의 항목에 대한 몇 가지 작업을 수행 할 필요가없는 경우 :

{% for entry in array %} 
User {{ entry.attribute1 }} has id {{ entry.attribute2 }} 
{% if not loop.last %}, {% endif %} 
{% endfor %}