2010-12-07 60 views
2

考虑以下目录:Django的模板包括/延伸带子目录

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

page.html延伸../basic.html包括nav.html

在这种情况下,其被认为包括在folder1/nav.html。如果我删除folder1/nav.html没有任何被包括在内。我该如何解决?我可以将nav.html转换为basic.html,但可能会出现我想要basic.html做一些包括的情况。

编辑:这个想法是任何继承basic.html的东西都会得到顶层的nav.html模板,但似乎并不是这样,因为include nav.html指令是在任何模板的当前目录中评估的。

+0

你可以评论你为什么要删除folder1/nav.html?如果您要删除包含的文件,您似乎只需修复basic.html。当然,我知道你有自己的情况,但我会成为那个说可能有不同的方法来处理它的人。 – munchybunch 2011-01-11 08:22:00

+0

看起来唯一的方法就是直接在basic.html中包含nav.html的内容,但是我宁愿将它分开 - 当然,纯粹是美学原因。 – decitrig 2011-01-12 18:34:01

回答

0

我不知道我是否正确地得到了一切,但我认为你必须附上includeblock

basic.html:

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

page.html中:

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

如果不重写page.html导航块中的原始包括应该用...