jinja

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


 

방문 감사합니다. (즐겨찾기 등록: 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 - 맞춤 필터
1/11
목록
  • 채팅방
  • 필독
1. 채팅창 헤드에서 접속자 확인 2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능 8. 채팅방에 개인정보 입력 금지 9. 채팅방에 광고 욕설 비방 금지
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어 1
고급코딩언어
그누보드 1
제작의뢰
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱닷컴 PC버전 로그인