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

[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)

분류 제목
intro Jinja - 소개 - 설치
api Jinja - API - 기초
api Jinja - API - 고급 API
api Jinja - API - 자동 이스케이프
api Jinja - API - 식별자에 관한 참고 사항
api Jinja - API - 정의되지 않은 유형
api Jinja - API - 문맥
api Jinja - API - 로더
api Jinja - API - 바이트코드 캐시
api Jinja - API - 비동기 지원
api Jinja - API - 정책
api Jinja - API - 유용
api Jinja - API - 예외
api Jinja - API - 맞춤 필터
api Jinja - API - 맞춤형 테스트
api Jinja - API - 평가 컨텍스트
api Jinja - API - 글로벌 네임스페이스
api Jinja - API - 저수준 API
api Jinja - API - 메타 API
1/9
목록
찾아주셔서 감사합니다. Since 2012