2011-03-04 4 views
8

저는 webapp 프레임 워크와 함께 python google app 엔진을 사용하고 있습니다. 장고 템플릿 대신 jinja2 템플릿을 사용합니다.jinja2 템플릿 내부에서 객체의 key_name에 액세스 할 수 있습니까?

goody = object.key().name() 

하지만이 가능를 템플릿 로직 내에서 KEY_NAME에 액세스 할 수 :

나는 당신이 그렇게처럼 호출하여 처리기 메서드 내부에서 객체의 KEY_NAME을 얻을 수있어? 이 같은?

{% for object in objectList %} 
{{object|key_name}} 
{% endfor %} 

은 물론 그 작동하지 않습니다,하지만 일부 필터가 아니면 객체가 핸들러 메소드 내부에 별도의 시시한없이 템플릿 내부에서 함께 저장됩니다 KEY_NAME 앱 엔진에서 얻을하는 데 사용할 수있는 속성을 숨겨?

답변

7

Jinja2 당신이 여기 설명서에 따라 단지 ()를 사용하여, callables을 실행할 수 있습니다 : 그래서 http://jinja.pocoo.org/docs/templates/#other-operators

이 작동합니다 :

{% for instance in instance_list %} 
    {{ instance.key().name() }} 
{% endfor %} 
+0

나는 그것을 전에 시도했지만 작동하지 않았다. 그러나 나는 지금 시도했기 때문에 뭔가 잘못 됐음에 틀림 없다. 후속 조치, 이러한 호출 용 오버 헤드가 있습니까? 많은 객체에 대해이 작업을 수행해야하는 경우 별도의 속성에 값을 저장하는 것이 더 좋을까요? –

+0

의존적 인 함수 호출은 파이썬에서 가장 비싼 연산 중 하나입니다. 이 코드가 뜨거워지면 기능을 실행하지 않도록 지능적인 방법으로 직접 저장하는 것이 좋습니다. 이것이 자주 실행되지 않으면 잘됩니다. 조기 최적화에주의하십시오 :) –

2

당신은 object.key.name을 할 수있는 장고 템플릿 내부에서 appengine 데이터 저장소에 액세스 할 수 개체의 키 이름

일반적으로 키 이름에 액세스합니다.파이썬 코드에서 object.key().name()

장고 템플릿은 자동으로 object.key.name을 해석 할 수있는 몇 가지 방법을 시도합니다.

관련 문제