Шаблоны 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)
Ответы
Ответ 1
От документы:
Примечание
Тег include
следует рассматривать как реализацию "визуализировать эту подтему и включать HTML", а не как "проанализировать эту подтему и включить ее содержимое, как если бы она была частью родителя". Это означает, что между включенными шаблонами не существует общего состояния - каждый из них является полностью независимым процессом рендеринга.
Если вы хотите, чтобы block.super
работал, вам нужно вместо этого использовать extends
.
Ответ 2
Я знаю это слишком поздно, но у меня может быть какое-то решение. Используя django-sekizai, вы можете загрузить js и css в одно место. Взгляните на http://django-sekizai.readthedocs.org/en/latest/