Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django templates - using block.super in included template fails (exception)

the idea is to to have multiple widgets on a page and include all js and css files needed form this 'widgets' (it's easy to manage files this way). Duplicated files is not a problem. Every widget's template is included into a page by {%include%} From inside widget's template I'm trying to add content to parent's block:

PARENT:

{%block js%}
{%endblock%}

WIDGET

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

this is giving an error with {{block.super}}: Caught AttributeError while rendering: 'BlockNode' object has no attribute 'context'

I'm not sure how else can I extend block... Seems it's impossible in django... any ideas? Defining multiple blocks will not work as we don't know how many different widgets with what names will we have on each page... (and it's not a nemplate's worry)

like image 606
robertzp Avatar asked Jul 04 '11 00:07

robertzp


1 Answers

From the docs:

Note

The include tag should be considered as an implementation of "render this subtemplate and include the HTML", not as "parse this subtemplate and include its contents as if it were part of the parent". This means that there is no shared state between included templates -- each include is a completely independent rendering process.

If you want block.super to work then you need to use extends instead.

like image 76
Ignacio Vazquez-Abrams Avatar answered Sep 18 '22 14:09

Ignacio Vazquez-Abrams