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

[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


분류 제목
tests Jinja - divisibleby() 테스트 - 해당값을 지정숫자로 나머지 없이 정확히 나눌 수 있는지 여…
tests Jinja - eq() / equalto() 테스트 - 동일한지(=같은지) 여부 체크 (= eq테스트 = 이…
tests Jinja - escaped() 테스트 - 회피처리된 값인지 체크 (= escaped테스트 = 이스케이프드테…
tests Jinja - even() 테스트 - 짝수인지 여부 체크 (= even테스트 = 이븐테스트)
tests Jinja - false() 테스트 - 거짓인지 체크 (= false테스트 = 폴스테스트)
tests Jinja - filter() 테스트 - 필터 존재 여부 체크 (= filter테스트 = 필터테스트)
tests Jinja - float() 테스트 - 부동소수(실수) 여부 체크 (= float테스트 = 플로우트테스트)
tests Jinja - ge() 테스트 - 더 크거나 같은지 체크 (= ge테스트 = 지이테스트/제테스트/게테스트)
tests Jinja - gt() / greaterthan() 테스트 - 더 큰지 체크 (= gt테스트 = 지티테스트 …
tests Jinja - in() 테스트 - 지정값이 시퀀스에 있는지 체크 (= in테스트 = 인테스트)
tests Jinja - integer() 테스트 - 정수인지 여부 체크 (= integer테스트 = 인티저테스트/인트…
tests Jinja - iterable() 테스트 - 반복 가능한 객체인지 체크 (= iterable테스트 = 이터러…
tests Jinja - le() 테스트 - 더 작거나 같은지 체크 (= le테스트 = 엘이데스트/레테스트)
tests Jinja - lower() 테스트 - 소문자인지 여부 체크 (= lower테스트 = 로우어테스트)
tests Jinja - lt() / lessthan() 테스트 - 보다 더 작은지 체크 (= lt테스트 = 엘티테스트…
tests Jinja - mapping() 테스트 - 매핑인지 여부 체크 (= mapping테스트 = 매핑테스트)
tests Jinja - ne() 테스트 - 다른지 여부 체크 (= ne테스트 = 네테스트/낫이퀄테스트)
tests Jinja - none() 테스트 - none인지 여부 체크 (= none테스트 = 넌테스트)
tests Jinja - number() 테스트 - 숫자인지 체크 (= number테스트 = 넘버테스트)
tests Jinja - odd() 테스트 - 홀수인지 여부 체크 (= odd테스트 = 아드테스트)
7/9
목록
찾아주셔서 감사합니다. Since 2012