programing tip

jinja python 템플릿에서 쉼표로 구분 된 목록을 출력하는 방법은 무엇입니까?

itbloger 2020. 6. 9. 08:20
반응형

jinja python 템플릿에서 쉼표로 구분 된 목록을 출력하는 방법은 무엇입니까?


userssay 의 목록이 있으면 ["Sam", "Bob", "Joe"]jinja 템플릿 파일에서 출력 할 수있는 작업을하고 싶습니다.

{% for user in userlist %}
    <a href="/profile/{{ user }}/">{{ user }}</a>
    {% if !loop.last %}
        , 
    {% endif %}
{% endfor %}   

출력 템플릿을 다음과 같이 만들고 싶습니다.

Sam, Bob, Joe

루프의 마지막 반복에 있는지 확인하기 위해 위의 코드를 시도했지만 그렇지 않은 경우 쉼표를 삽입하지 않지만 작동하지 않습니다. 어떻게해야합니까?


당신은 당신의 if수표를 원합니다 :

{% if not loop.last %}
    ,
{% endif %}

If Expression 을 사용하여 코드를 줄일 수도 있습니다 .

{{ "," if not loop.last }}

내장 된 "join"필터 ( http://jinja.pocoo.org/docs/templates/#join)를 사용할 수도 있습니다 .

{{ users|join(', ') }}

그리고를 사용 joiner에서 http://jinja.pocoo.org/docs/dev/templates/#joiner

{% set comma = joiner(",") %}
{% for user in userlist %}
    {{ comma() }}<a href="/profile/{{ user }}/">{{ user }}</a>
{% endfor %}  

이 정확한 목적을 위해 만들어졌습니다. 일반적으로 forloop.last의 결합 또는 검사는 단일 목록으로 충분하지만 여러 그룹의 경우 유용합니다.

사용하는 이유에 대한 더 복잡한 예입니다.

{% set pipe = joiner("|") %}
{% if categories %} {{ pipe() }}
    Categories: {{ categories|join(", ") }}
{% endif %}
{% if author %} {{ pipe() }}
    Author: {{ author() }}
{% endif %}
{% if can_edit %} {{ pipe() }}
    <a href="?action=edit">Edit</a>
{% endif %}

참고 URL : https://stackoverflow.com/questions/11974318/how-to-output-a-comma-delimited-list-in-jinja-python-template

반응형