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

[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


분류 제목
template Jinja - 템플릿 - 전역함수 목록 (Template - List of Global Functions)
template Jinja - 템플릿 - 확장 (Template - Extensions)
template Jinja - 템플릿 - 자동 이스케이프 재정의 (Template - Autoescape Overrides)
extensions Jinja - 확장 - 확장 추가 (Extensions - Adding Extensions)
extensions Jinja - 확장 - i18n 확장 (Extensions - i18n Extension)
extensions Jinja - 확장 - 표현문 (Extensions - Expression Statement)
extensions Jinja - 확장 - 반복 제어 (Extensions - Loop Controls)
extensions Jinja - 확장 - With 구문 (Extensions - With Statement) ※ 위드구문
extensions Jinja - 확장 - 자동 이스케이프 확장 (Extensions - Autoescape Extension)
extensions Jinja - 확장 - 디버그 확장 (Extensions - Debug Extension)
extensions Jinja - 확장 - 확장 기능 작성 (Extensions - Writing Extensions)
extensions Jinja - 확장 - 예시 확장 (Extensions - Example Extensions)
extensions Jinja - 확장 - 확장 API (Extensions - Extension API)
integration Jinja - 완성 - 플라스크 (Integration - Flask)
integration Jinja - 완성 - 장고 (Integration - Django)
integration Jinja - 완성 - 바벨 (Integration - Babel)
integration Jinja - 완성 - 파일론스 (Integration - Pylons)
switching Jinja - 다른 템플릿 엔진에서 전환 - Django (장고)
switching Jinja - 다른 템플릿 엔진에서 전환 - Mako (마코)
tip Jinja - 팁과 요령 - Null-기본 폴백 (Tips and Tricks - Null-Default F…
3/9
목록
찾아주셔서 감사합니다. Since 2012