2010-07-11 6 views
0

저는 Jinja2 템플릿 엔진에 익숙하지 않습니다. 젠드 프레임 워크의 뷰 헬퍼와 같은 것이 있습니까? 간단한 함수를 만들어 내 모든 템플릿 파일 전체에서 재사용 할 수 있습니까?Jinja2 :보기 도우미를 찾고 있습니다

이와 비슷한?

#somewhere in my python code: 
def nice_demo_function(message): 
    """"return a simple message""" 
    return message 

그래서 내가 그것을 사용하는 수

당신이 당신의 템플릿 도우미 기능을 노출하는 방법은 여러 가지가있다
<!-- now in my template-file --> 
{% nice_demo_function('yes, this works great!') %} 

답변

3

. macros을 사용하여 정의한 다음 import을 사용하는 템플릿으로 정의 할 수 있습니다. 템플릿 객체의 globals attribute에 함수를 추가하거나 render() 메소드로 전달할 수 있습니다. 매번 반복하지 않아도 동일한 작업을 수행하도록 템플릿을 하위 클래스화할 수 있습니다. 당신이 정말로 공상에 빠지기를 원한다면, extensions 글씨를 볼 수도 있습니다 (그러나 그 정도 깊이 갈 필요는 없을 것입니다).

+0

글로벌 일은 내가 필요로하는 것입니다. – DerKlops

2

어느 시점에서 Jinja2 환경이 만들어집니다. 환경에는 이름을 함수에 매핑하는 dict 인 필터라는 속성이 있습니다.

<p>The winner is {{ winner | my_helper }}</p> 

그리고 당신의 기능은이 경우 winner에, 변수의 값으로 호출됩니다

def my_helper(value): 
    return "-~*#--- %s ---#*~-" % value 

env = Jinja2.Environment(...) 
env.filters['my_helper'] = my_helper 

지금 템플릿에 당신이 할 수 있습니다 : 그래서 당신이 원하는 것입니다. 파일론을 사용하는 경우이 모든 것은 config/environment.py에서 발생합니다.