programing

jinja python 템플릿에서 쉼표로 구분된 목록을 출력하려면 어떻게 해야 합니까?

minecode 2022. 10. 31. 21:21
반응형

jinja python 템플릿에서 쉼표로 구분된 목록을 출력하려면 어떻게 해야 합니까?

리스트가 있으면users말합니다["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 else "" }}

내장 필터를 다음과 같이 사용할 수도 있습니다.

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

또,joinerhttps://jinja.palletsprojects.com/templates/ #sysloger에서

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

정확히 이런 목적으로 만들어졌어요.보통 forloop.last의 join 또는 체크는 하나의 목록에는 충분하지만 여러 그룹의 작업에는 유용합니다.

이 기능을 사용하는 이유에 대한 보다 복잡한 예입니다.

{% 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

반응형