2017-10-30 6 views
0

import 최상위 콘텐츠가 있지만 콘텐츠 자체를 실행하지 않는 Jinja 템플릿을 원합니다. 예를 들어 :템플릿 내용을 실행하지 않고 Jinja 템플릿에서 매크로 가져 오기

template_with_macros.html :

{% macro link(text, url) %} 
    <a href='{{ url }}'>{{ text }}</a> 
{% endmacro %} 
{% for text, url in {'Google': 'http://google.com', 'Stack Overflow': 'http://stackoverflow.com'}.items() %} 
    {{ link(text, url) }} 
{% endfor %} 

template_that_uses_macros.html는 :

{% import "template_with_macros.html" as macros %} 
{{ macros.link("Homepage", "/") }} 
당신 import 신사 템플릿, 템플릿의 내용이 포함되어 있지 않습니다

, 그러나 그것은이다 존재하지 않는 변수가 오류를 일으키고, 원하지 않는 코드를 실행할 때 일어나는 다른 나쁜 일들이 있음을 의미합니다.

내용을 실행하지 않고 Jinja 템플릿을 가져 오는 방법이 있습니까?

내 응용 프로그램에서 템플릿 코드를 체계적으로 정리할 수 있기 때문에 매크로를 다른 파일로 통합하는 대신이 작업을 수행하고 싶습니다.

답변

1

아니요, 이렇게 할 방법이 없습니다. Jinja 템플릿은 Python 모듈로 컴파일됩니다. 최상위 레벨 코드는 모듈을 가져올 때 실행됩니다. 템플리트에도 동일하게 적용됩니다.