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

[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)만 조회함.


 


분류 제목
tests Jinja - sameas() 테스트 - 두 객체의 메모리 주소 동일성 체크 (= sameas테스트 = 세임…
tests Jinja - sequence() 테스트 - 시퀀스인지 여부 체크 (= sequence테스트 = 시퀀스테스트…
tests Jinja - string() 테스트 - 문자열인지 체크 (= string테스트 = 스트링테스트)
tests Jinja - test() 테스트 - 테스트 존재 여부 체크 (= test테스트 = 테스트테스트)
tests Jinja - true() 테스트 - 참인지 체크 (= true테스트 = 트루테스트)
tests Jinja - undefined() 테스트 - 변수가 정의 안 되었는지 체크 (= undefined테스트 =…
tests Jinja - upper() 테스트 - 대문자인지 체크 (= upper테스트 = 어퍼테스트)
functions Jinja - range() 함수 ★ - 지정 범위 안 지정 간격의 정수 리스트 반환 (= range함수 =…
functions Jinja - lipsum() 함수 - 로렘입섬(= 의미없는 채우기용 문자열) (=lipsum함수 = 립섬함…
functions Jinja - dict() 함수 ★ - 딕트 리터럴 반환 (= 딕셔너리 반환 = dict함수 = 딕트함수)
functions Jinja - cycler() 함수 ★ - 교대순환 반환 (=cycler함수 = 사이클러함수) ※ cycle…
functions Jinja - joiner() 함수 ★ - 결합구분자 지정 (= 결합문자 지정 = joiner함수 = 조이너…
functions Jinja - namespace() 함수 - 속성 할당 가능한 변수 생성 (= namespace함수 = 네임…
structures Jinja - for 반복문 (= for반복문 = 포반복문/포문)
structures Jinja - if 조건문 (= if조건문 = 이프조건문/이프문)
structures Jinja - macro (매크로)
structures Jinja - call (콜블럭) ※ caller함수 = 콜러함수
structures Jinja - filter (필터섹션)
structures Jinja - Assignments (할당) ※ set태그 = 셋태그 ※ namespace (네임스페이스) …
structures Jinja - Block Assignments (블럭 할당)
8/9
목록
찾아주셔서 감사합니다. Since 2012