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

[template] Jinja - 템플릿 - 변수 (Template - Variables)

템플릿 - 변수 (Variables)

 

1.

템플릿 변수는 템플릿에 전달된 '컨텍스트 딕셔너리 (context dictionary)'에 의해 정의됨.

 

2.

  • 애플리케이션에서 전달한 템플릿의 변수를 조작 가능.
  • 변수에는 액세스할 수 있는 속성이나 요소가 있을 수 있음.
  • 변수가 갖는 속성은 해당 변수를 제공하는 애플리케이션에 따라 크게 달라짐.

 

3.

표준 Python __getitem__ “하위 첨자” 구문([]) 외에도 점(.)을 사용하여 변수의 속성에 접근 가능. (예)

  • {{ foo.bar }}
  • {{ foo['bar'] }}

PS. 주의사항

  • 바깥쪽 이중 중괄호({{.. }})는 변수의 일부가 아니라 print 문의 일부라는 점을 아는 것이 중요. 
  • 태그 안의 변수에 접근하는 경우 변수 주위에 중괄호를 넣으면 안 됨.

 

4.

  • 변수나 속성이 존재하지 않으면 정의되지 않은 값이 반환되는데, 이러한 종류의 값으로 수행할 수 있는 작업은 애플리케이션 구성에 따라 다름. (기본 동작은 인쇄되거나 반복되는 경우 빈 문자열로 평가되고 다른 모든 작업에서는 실패하는 것임.)

 


5. Jinja에서 (foo.bar / foo['bar'])의 실행(Implementation) 순서 차이

 

(1) foo.bar 경우, Python 계층 상 실행 순서

  1. foo에서 bar라는 속성(attribute) 확인. (getattr(foo, 'bar'))
  2. 없으면 foo에서 "bar" 항목(item) 확인.  (foo.__getitem__('bar'))
  3. 없으면 정의되지 않은 객체를 반환.


(2) foo['bar'] 경우, Python 계층 상 실행 순서

  1. foo에서 'bar' 항목(item) 확인. (foo.__getitem__('bar'))
  2. 없으면 foo에서 bar라는 속성(attribute) 확인. (getattr(foo, 'bar'))
  3. 없으면 정의되지 않은 객체를 반환.


PS. 

  • 객체에 동명의 항목(item)과 속성(attribute) 존재 시, 실행순서 차이를 이해하는 건 매우 중요
  • attr() 필터는 속성(attribute)만 조회함.


 


분류 제목
filters Jinja - select() 필터 - 지정 테스트 통과한 요소만 필터링 (= select필터 = 실렉트필터…
filters Jinja - selectattr() 필터 - 지정 속성에 대한 테스트 통과한 아이템만 필터링 (= sele…
filters Jinja - slice() 필터 - 집합을 지정 개수로 쪼개기 (= slice필터 = 슬라이스필터) ※ 지…
filters Jinja - sort() 필터 ★ - 정렬 (= sort필터 = 소트필터) ※ 오름차순/내림차순
filters Jinja - string() 필터 - 문자열로 변환 (= string필터 = 스트링필터)
filters Jinja - striptags() 필터 ★ - 태그 제거 (= striptags필터 = 스트립태그스필터)
filters Jinja - sum() 필터 - (합계/합산/총합/총계) 구하기 (= sum필터 = 섬필터)
filters Jinja - title() 필터 - 각 단어의 첫글자를 대문자로 나머지는 소문자로 변환. (= title필…
filters Jinja - tojson() 필터 - JSON 문자열로 직렬화 (= tojson필터 = 투제이슨필터)
filters Jinja - truncate() 필터 - 문자열을 지정 길이로 자르기 (= truncate필터 = 트런케이…
filters Jinja - unique() 필터 - 고유 아이템으로 구성된 반복자 반환 (= unique필터 = 유니크필…
filters Jinja - upper() 필터 - 대문자로 변환 (= upper필터 = 어퍼필터) ※ 문자열 전체를 대문…
filters Jinja - urlencode() 필터 - URL 주소나 또는 쿼리에 적합한 문자열로 변환 (= urlen…
filters Jinja - urlize() 필터 ★ - 텍스트 URL을 클릭 가능한 링크로 변환 적용 (= urlize필…
filters Jinja - wordcount() 필터 - 문자열의 단어 개수 세기 (= wordcount필터 = 워드카운…
filters Jinja - wordwrap() 필터 - 문자열을 지정 길이 단위로 쪼개기 (= wordwrap필터 = 워…
filters Jinja - xmlattr() 필터 - dict의 아이템 기반으로 SGML/XML 속성 문자열 생성 (= …
tests Jinja - boolean() 테스트 - boolean 타입인지 체크 (= boolean테스트 = 불리언테…
tests Jinja - callable() 테스트 - 호출 가능한지 체크 (= callable테스트 = 콜러블테스트)
tests Jinja - defined() 테스트 ★ - 변수 정의되었는지 여부 체크 (= defined테스트 = 디파…
6/9
목록
찾아주셔서 감사합니다. Since 2012