2010-12-07 3 views
2

으로 연장 포함/:장고 템플릿은 다음 디렉토리를 고려 하위 디렉토리

|- basic.html 
|- nav.html 
|- folder1/ 
|- |- page.html 
\- \- nav.html 

page.html는이 경우 nav.html

을 포함 ../basic.html를 확장은 포함 가져옵니다 folder1/nav.html. folder1/nav.html을 삭제하면 은 없습니다.이 포함됩니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 basic.html에 인라인 nav.html을 인라인 할 수 있지만, 내가 가지고 싶은 길 아래에는 상황이있을 수 있습니다. basic.html 일부 포함됩니다.

편집 : 아이디어는 어떤 템플릿의 현재 디렉토리에서 include nav.html 지시어가 평가되기 때문에 basic.html을 상속받은 것이 최상위 nav.html 템플릿을 얻는다는 아이디어입니다.

+0

는 할 수 있습니다 folder1/nav.html을 제거하려는 이유에 대한 의견이 있으십니까? 당신이 포함하고있는 파일을 지우고 싶다면 basic.html을 수정하는 것처럼 보인다. 물론, 당신이 당신 자신의 상황을 가지고 있다는 것을 이해합니다, 그러나 나는 그것에 접근하는 다른 방법이있을 것이라고 말하는 그 사람이 될 것입니다. – munchybunch

+0

작동하는 basic.html에 nav.html의 내용을 직접 포함시키는 것이 유일한 방법 인 것처럼 보입니다.하지만 차라리 별도로 보관해야합니다. 물론 순수한 미적 이유입니다. – decitrig

답변

0

나는 모든 것을 올바르게 얻었는지 모르지만, includeblock으로 묶어야한다고 생각합니까?

basic.html :

... 
{% block navigation %} 
{% include "nav.html" %} 
{% endblock %} 

page.html :

{% extends "../basic.html" %} 
{% block navigation %} 
{% include "folder1/nav.html" %} 
{% endblock %} 

원래 포함 page.html의 탐색 블록이 사용되어야 덮어 쓰지 않으면 ...

+0

그게 효과가있는 것처럼 보이지만 요점은 다른 데이터를 표시 할 필요가없는 한 page.html이 '블록 탐색'을 무시해야하는 것이 아니라는 것입니다. – decitrig

+0

블록을 무시하는 것에 대해 나쁜 점은 무엇입니까? –

+0

그게 작동하지 않는 것 같습니다 - 문제는'include' 지시어가 블록이 정의 된 곳이 아닌 page.html의 현재 디렉토리 내에서 평가된다는 것입니다. – decitrig

관련 문제