Подтвердить что ты не робот

Шаблоны django - сбой блока block.super в включенном шаблоне (исключение)

идея состоит в том, чтобы иметь несколько виджетов на странице и включать все js и css файлы, необходимые для создания этих "виджетов" (таким образом легко управлять файлами). Дублированные файлы не являются проблемой. Каждый шаблон виджета включен в страницу {% include%} Изнутри шаблона виджета я пытаюсь добавить содержимое в родительский блок:

РОДИТЕЛЕЙ:

{%block js%}
{%endblock%}

ВИДЖЕТ

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

это дает ошибку с {{block.super}}: Caught AttributeError while rendering: 'BlockNode' object has no attribute 'context'

Я не уверен, как еще я могу расширить блок... Кажется, это невозможно в django... любые идеи? Определение нескольких блоков не будет работать, поскольку мы не знаем, сколько разных виджетов с именами мы будем иметь на каждой странице... (и это не проблема с nemplate)

4b9b3361

Ответ 1

От документы:

Примечание

Тег include следует рассматривать как реализацию "визуализировать эту подтему и включать HTML", а не как "проанализировать эту подтему и включить ее содержимое, как если бы она была частью родителя". Это означает, что между включенными шаблонами не существует общего состояния - каждый из них является полностью независимым процессом рендеринга.

Если вы хотите, чтобы block.super работал, вам нужно вместо этого использовать extends.

Ответ 2

Я знаю это слишком поздно, но у меня может быть какое-то решение. Используя django-sekizai, вы можете загрузить js и css в одно место. Взгляните на http://django-sekizai.readthedocs.org/en/latest/