django模板 - 在包含的模板中使用block.super失败(异常)

时间:2011-07-04 00:16:23

标签: django templates include block super

这个想法是在一个页面上有多个小部件,并包含这个'小部件'所需的所有js和css文件(以这种方式管理文件很容易)。重复的文件不是问题。 每个小部件的模板都包含在{%include%}的页面中 从小部件的模板中我试图将内容添加到父级块:

PARENT:

{%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中是不可能的......任何想法? 定义多个块将无法正常工作,因为我们不知道每个页面上有多少个不同的小部件,我们将拥有什么名称...(而且这不是一个模板的担心)

2 个答案:

答案 0 :(得分:15)

来自the docs

  

注意

     

include标记应该被视为“渲染此子模板并包含HTML”的实现,而不是“解析此子模板并将其内容包含在内,就好像它是父节点的一部分”。这意味着包含的模板之间没有共享状态 - 每个包含都是完全独立的渲染过程。

如果您想block.super工作,则需要使用extends

答案 1 :(得分:2)

我知道有点太晚了,但我可能有一些解决方案。使用django-sekizai,您可以将js和css加载到一个地方。看看http://django-sekizai.readthedocs.org/en/latest/