2010-06-24 5 views
0

나는 여기 장고 템플릿

내가 렌더링 템플릿입니다 ... 분명히 일부 어두운 마법의 피해자입니다 :

여기
def inspect_object(obj): 
    return obj.measure() 

는 렌더링이 나에게주는 것입니다 :

>>> template.render(context) 
u'6 None' 

분명히 함수 호출이 성공적이지만 {{my_cube.measure}}가 제대로 렌더링되지 않는 이유를 아는 사람이 있습니까 ???

NB : 측정 기능은 마술을하지 않으며 내부 상태도 변경되지 않고 테스트를 거쳤으며 매번 동일한 결과를 주었으며 {{cube.measure}} 전에 검사를 실시했습니다. 아무것도 바뀌지 않습니다. 나는 무슨 일이 일어나고 있는지 전혀 모른다.

편집 : 나는 그것이 어디에서 오는 것으로 보인다는 것을 안다. 그러나 여전히 이상합니다. 어떤 이유로, 내 객체의 속성은 template.Variable에 의해 해결되지 않습니다

>>> Variable('measure').resolve(c) == None 
True 
>>> Variable('testitesti').resolve(c) == None 
True 
>>> c.testitesti() 
68 
#implementation of testitesti : 
def testitesti(self): 
    return 68 

답변

2

음 ... 나는 그 망할 것을 발견했습니다!

렌더링하려는 객체에 __getitem__ 메서드가 비어 있었기 때문에 dictionnary 인덱싱이이 객체에서 작동하므로 (오류가 발생하지 않음) 물론 함수 호출이 수행되지 않았습니다!

0

가 네, 필터로 등록되고 검사? 나는 그렇지 않으면 전체 템플렛이 질식 할 것입니다. 가능한 예약어 충돌이 있습니까? 결국 inspect은 매우로드 된 용어입니다. 그 필터의 이름을 다른 이름으로 바꾸려고 했습니까?

+0

사실,이 'inspect'필터는 이전에 버그를 관찰 한 후에 필자가 작성한 디버그 필터 일뿐입니다 ... 게다가 이름 충돌이 있다는 이상한 우연의 일치가 될 것입니다 .... tadaaaa : 나는 여전히 기대되는 가치를 얻고있다! 하지만 ... 시도해 ... – sebpiq

+0

옙 ... 필터 'my_super_unique_inspect'를 호출하면 똑같은 문제가 발생합니다. – sebpiq