템플릿 - 공백 제어
1. 공백 제어 기본 구성 .
마지막에 개행 문자가 하나 있으면 제거됨.
다른 공백(spance, tab, newlines 등)은 변경되지 않고 반환됨.
2. 애플리케이션에서 이용 가능한 Jinja 공백 제어 옵션 2가지 .
trim_blocks 옵션 - 템플릿 태그 다음의 첫 번째 개행 문자가 자동으로 제거됨 (마치 PHP처럼).
lstrip_blocks 옵션 - 라인의 시작부터 블록의 시작까지의 탭 및 공백을 제거함. (블록 시작 전에 다른 문자가 있으면 제거 안 됨.)
3. trim_blocks 와 lstrip_blocks 를 모두 활성화하면 블록 태그를 자체 라인에 놓을 수 있으며, 렌더링될 때 전체 블록 라인이 제거되어 내용의 공백이 보존됨.
예를 들어, trim_blocks와 lstrip_blocks 옵션이 없는 경우 이 템플릿은:
<div>
{% if True %}
yay
{% endif %}
</div>
div 안에 공백 줄이 포함된 상태로 렌더링 됨:
<div>
yay
</div>
그러나, trim_blocks와 lstrip_blocks를 모두 활성화한 경우 템플릿 블록 라인이 제거되고 다른 공백이 보존됨:
<div>
yay
</div>
4. 수동으로 lstrip_blocks 동작을 비활성화 하려면 블록 시작에 플러스 기호(+)를 넣으면 됨:
<div>
{%+ if something %}yay{% endif %}
</div>
마찬가지로, trim_blocks 동작을 비활성화 하려면 블록 끝에 플러스 기호(+)를 넣으면 됨:
<div>
{% if something + %}
yay
{% endif %}
</div>
5. 템플릿에서도 공백을 제거 가능함. 블록(예: For 태그), 주석, 변수 표현식의 시작 또는 끝에 마이너스 기호(-)를 추가하면 해당 블록의 앞이나 뒤의 공백이 제거됨:
{% for item in seq - %}
{{ item }}
{%- endfor %}
이렇게 하면 각 요소 사이에 공백 없이 모든 요소가 생성됨. seq가 1에서 9까지의 숫자 리스트였다면 출력은 123456789가 됨.
6.라인 구문 이 활성화되면 줄의 시작부터 자동으로 선행 공백이 제거됨.
7.
기본 설정에서 Jinja는 또한 마지막 개행 문자를 제거함. 단일 마지막 개행 문자를 유지하려면 Jinja를 keep_trailing_newline 으로 구성.
PS. 태그와 마이너스 기호(-) 사이에 공백 추가하면 안 됨.
유효 O: {%- if foo -%}...{% endif %}
유효 X: {% - if foo - %}...{% endif %}
공식 매뉴얼: https://jinja.palletsprojects.com/en/3.1.x/templates/#whitespace-control
주소 복사
랜덤 이동