2011-07-04 140 views
12

的想法是有一个页面上的多个部件,并包括所有的JS和CSS文件所需形式的这种“小工具”(可以很容易地管理文件这样) 。重复的文件不是问题。 每个小部件的模板包含到一个页面由{%包含%} 从widget的模板中我试图将内容添加到父母的块:Django模板 - 在模板中包含使用block.super失败(例外)

家长:

{%block js%} 
{%endblock%} 

WIDGET

{%block js%} 
    {{block.super}} 
    ///my widget spectyfic JS 
{%end block%} 

这是给出了一个错误{{block.super}}: Caught AttributeError while rendering: 'BlockNode' object has no attribute 'context'

我不知道我怎么能扩展块...似乎它在django中是不可能的...任何想法? 定义多个块将无法工作,因为我们不知道有多少不同的部件用什么名称,我们将在每一页上...(这不是一个nemplate的忧虑)

+1

嗨robertzp,我也面临着同样的问题。你有解决方案吗?请帮助我。 – PythonDev

回答

14

the docs

注意

include标记应被视为“呈现此子模板,并包括HTML”,而不是“分析此子模板,包括它的内容就好像它是母公司的一部分”的实现。这意味着所包含模板之间不存在共享状态 - 每个包含都是完全独立的呈现过程。

如果你想block.super工作,那么你需要使用extends来代替。