1
을 사용하는 경우는 Mako docs에서 다음 예제 실제로 작동하지 않습니다마코 : 나가서 설명하자면 NameError 전역 변수
나는 아래<%self:outer />
가 (아무 것도이 파일에 없음) 수비력 전화를 추가
<%
x = 12
%>
<%def name="outer()">
<%
y = 15
%>
<%def name="inner()">
inner, x is ${x}, y is ${y}
</%def>
outer, x is ${x}, y is ${y}
</%def>
페이지를 오류가 발생하고 내 아파치 로그에 다음과 같이 표시됩니다.
[Sun Dec 02 13:25:08 2012] [error] [client 89.247.172.1] File "/tmp/mako_template_cache/index.html.mako.py", line 82, in render_outer
[Sun Dec 02 13:25:08 2012] [error] [client 89.247.172.1] __M_writer(str(x))
[Sun Dec 02 13:25:08 2012] [error] [client 89.247.172.1] File "/usr/lib/python3/dist-packages/mako/runtime.py", line 195, in __str__
[Sun Dec 02 13:25:08 2012] [error] [client 89.247.172.1] raise NameError("Undefined")
[Sun Dec 02 13:25:08 2012] [error] [client 89.247.172.1] NameError: Undefined
내가 잘못 할 수 있습니까? 데비안에서 Mako 0.7.0이 있어야 작동 할 수 있습니다.
고맙습니다. 그래서'$ {outer()}'와 비슷한 태그가 있습니까? ('<%outer/>'는 작동하지 않으며'<% body : outer />'도 마찬가지입니다. 아니면 전역 변수 액세스를위한 함수 호출 구문을 강요하고 싶습니까? –
예 로컬 액세스를 보장하는 문법을 추가했는지 확인했는데 지금은 없습니다. 문제는 템플릿의 '<% a = 5 %>'이 "전역"이 아니며 body()에 국한된다는 것입니다. 전역 변수는 '<%! %>'블록을 사용하여 얻을 수있는 것이므로 [상속 가능한 속성] (http://docs.makotemplates.org/en/latest/inheritance.html#inheritance-attr)을 찾고있을 것입니다. – zzzeek
읽은 후 http://docs.makotemplates.org/en/latest/defs.html에서 일부 발언을하면 도움이 될 것입니다. * 최상위 수준의 모든 def는 현재 상황 별 네임 스페이스에 정확히 액세스 할 수 있습니다. 그들의 포함하는 템플릿이하는 것과 같은 방식으로. * 나는 인상'x'도 볼 수있다. –