• 회원가입
  • 로그인
  • 구글아이디로 로그인

[template] Jinja - 템플릿 - 공백 제어 ★ (Template - Whitespace Control)

템플릿 - 공백 제어

1. 공백 제어 기본 구성.

  • 마지막에 개행 문자가 하나 있으면 제거됨.
  • 다른 공백(spance, tab, newlines 등)은 변경되지 않고 반환됨.

 


2. 애플리케이션에서 이용 가능한 Jinja 공백 제어 옵션 2가지.

  • trim_blocks 옵션 - 템플릿 태그 다음의 첫 번째 개행 문자가 자동으로 제거됨 (마치 PHP처럼).
  • lstrip_blocks 옵션 - 라인의 시작부터 블록의 시작까지의 탭 및 공백을 제거함. (블록 시작 전에 다른 문자가 있으면 제거 안 됨.)

 


3. trim_blockslstrip_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

방문 감사합니다. (즐겨찾기 등록: Ctrl + D)

분류 제목
sandbox Jinja - 샌드박스 - 보안 고려 사항 (Sandbox - Security Considerations)
sandbox Jinja - 샌드박스 - API (Sandbox - API)
sandbox Jinja - 샌드박스 - 연산자 가로채기 (Sandbox - Operator Intercepting)
python_types Jinja - 고유 파이썬 타입 - 예제들 (Native Python Types - Examples)
python_types Jinja - 고유 파이썬 타입 - API (Native Python Types - API)
template Jinja - 템플릿 - 개요 / 템플릿파일확장자 (Template - Synopsis / Template …
template Jinja - 템플릿 - 변수 (Template - Variables)
template Jinja - 템플릿 - 필터 (Template - Filters)
template Jinja - 템플릿 - 테스트 (Template - Tests)
template Jinja - 템플릿 - 주석 (Template - Comments)
template Jinja - 템플릿 - 공백 제어 ★ (Template - Whitespace Control)
template Jinja - 템플릿 - 회피처리 (Template - Escaping) ※ 진자 템플릿 코드를 문자 그대로…
template Jinja - 템플릿 - 라인 구문 (Template - Line Statements) ※ 약식 코드
template Jinja - 템플릿 - 템플릿 상속 ★★★ (Template - Template Inheritance)
template Jinja - 템플릿 - HTML 회피 (Template - HTML Escaping) ※ e필터 = 이필터
template Jinja - 템플릿 - 제어 구조 목록 ★★★ (Template - List of Control Struc…
template Jinja - 템플릿 - 컨텍스트 동작 가져오기 (Template - Import Context Behavi…
template Jinja - 템플릿 - 표현식 ★ (Template - Expressions) ※ (자료형/연산자/기호/키…
template Jinja - 템플릿 - 내장필터 목록 (Template - List of Builtin Filters)
template Jinja - 템플릿 - 내장테스트 목록 (Template - List of Builtin Tests)
2/9
목록
찾아주셔서 감사합니다. Since 2012