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

rob*_*tzp 14 django templates block include super

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

家长:

{%block js%}
{%endblock%}
Run Code Online (Sandbox Code Playgroud)

WIDGET

{%block js%}
   {{block.super}}
   ///my widget spectyfic JS
{%end block%}
Run Code Online (Sandbox Code Playgroud)

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

我不确定我怎么能延长阻止...似乎这在django中是不可能的......任何想法?定义多个块将无法正常工作,因为我们不知道有多少不同的小部件,每个页面上都有我们的名字...(而且这不是一个nemplate的担心)

Ign*_*ams 16

来自文档:

注意

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

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