2013-02-25 2 views
2

I는 다음과 같습니다 템플릿이에 의해 작성되지 않은 :블록은 확장 된 템플릿

{% include "base/top.html" with context %} 
{% include "base/nav.html" with context %} 
<div id="content"> 
    Stuff 
    {% block content %}{% endblock %} 
</div> 
{% include "base/bottom.html" with context %} 

base/nav.htmlbase/bottom.html 정적 콘텐츠를 포함,하지만 base/top.html{% block title %}이 포함되어 있습니다. 내가 두 번째 템플릿이있을 때 그래서 첫 번째 파일과 같이 상속을 시도 같이

{% extends firstfile.html %} 
{% block title %}Imarealpage!{% endblock %} 
{% block content %}Lorem ipsum dorem smitshm{% endblock %} 

{% block title %} 부분은 렌더링되지 않습니다. 이 파일과 포함 된 파일의 다른 블록이 확장 된 템플릿에 정의되어 있는지 확인하려면 어떻게해야합니까?

답변

1

어떻게 {% include %}이 오해하는지 잘 알고 있습니다. {% include %} 태그는 이 아니고 전 처리기가입니다. 렌더링 전에 포함 된 템플릿의 코드를 포함 템플릿에 직접 넣지 않습니다. 대신 {% include %}은 포함 된 템플릿의 새 독립 템플릿 렌더링을 시작한 다음 (포함 된 템플릿을 사용자 코드에서 직접 렌더링 한 것처럼) 결과 인을 포함 된 템플릿의 렌더링에 포함시킵니다.

이 의미는 포함 된 템플릿이 포함 템플릿과 완전히 별개의 상속 계층을 가짐을 의미합니다. 예를 들어, 일부 블록이 포함 된 기본 템플릿 component.html을 가질 수 있습니다. foo-component.html{% extends "component.html" %}으로 시작하고 일부 블록은 component.html에서 채 웁니다. 그러면 은 {% include "foo-component.html" %}이고, foo-component.html은 상속이 component.html이고 그 결과가 layout.html이됩니다. 그러나 layout.html에있는 블록과 component.html에있는 블록 사이에는 관계가 없습니다.이 블록은 별도의 블록 구조와 상속 계층 구조를 가진 별도의 렌더링입니다.