2016-08-16 1 views
3

"플라스크 웹 개발"을 읽고 있습니다. 예 4-3에서 ,Flask에서 가져 오기와 확장의 차이점은 무엇입니까?

{% extends "base.html" %} 
{% import "bootstrap/wtf.html" as wtf %} 

내가 알고 싶습니다? (. 나는 그들이 사용에 매우 유사하다고 생각) 상황에서 확장 사이의 차이점은 무엇 을 가져올, 내가 사용하는 것 확장 또는 가져 오기?

답변

5

당신 extend 템플릿을 사용하면 (호출 제어 호출)을 제어 다른 템플릿 -은 "부모"템플릿에만 이름 블록 렌더링됩니다 : 한편

{% extends "base.html" %} 
{% block main_content %} 
Only shows up if there is a block called main_content 
in base.html. 
{% endblock main_content%} 

import 단순히 결합 템플리트를 템플릿 범위의 이름으로 변경하고 호출 할 시간과 위치를 호출자가 제어합니다 (호출자가 호출자를 제어 함).

{% import "bootstrap/wtf.html" as wtf %} 
Some of your own template code with {{ wtf.calls() }} where it makes sense. 
1

여기 은 차이가입니다. {% extends parent.html %}을 사용하면 parent.html을 렌더링하고 {% block %}을 정의 할 수 있으며 {% import %}에서는 템플릿 변수에 액세스 할 수 있습니다.

그래서 예제 템플릿은 base.html을 확장하고 bootstrap/wtf.html에서 변수를 가져옵니다. 파이썬의 클래스 상속 및 import 문과 같이 생각하십시오.

0

기본적으로 포함 된 템플릿은 현재 컨텍스트에 전달되고 가져온 템플릿은 전달되지 않습니다. 기본적으로 Jinja documentation

이 포함 된 템플릿을 가져온 반면 캐시되지 않습니다.

매크로가 포함 된 모듈로 가져 오기가 자주 사용되기 때문입니다.

매크로가 포함 된 템플릿에서 가져 오기를 사용하는 것이 가장 좋습니다. 일부 마크 업 템플릿을 사용하지 않을 때 include를 사용하는 것이 가장 좋습니다.

관련 문제