Включение шаблонов django в другие шаблоны для их анализа - PullRequest
0 голосов
/ 18 февраля 2012

Структура наследования Джанго сводит меня с ума.

Я создаю несколько скинов, каждый с двумя и тремя столбцами:

site1
  - two_cols.html
  - three_cols.html
site2
  - two_cols.html
  - three_cols.html

Макет three_cols.html расширяет файл two_cols.html и просто добавляет в макет дополнительный столбец с дополнительным заполнителем django-cms для содержимого.

Как для site1, так и для site2 почти единственное изменение на этом этапе - это другое имя таблицы стилей, поэтому я хочу переместить two_cols.html и three_cols.html в «общий» каталог, и иметь только те, которые находятся под site1 и site2 extension их.

Итак:

  • two_cols.html устанавливает имя блока для пути CSS
  • three_cols.html расширяет two_cols.html и предоставляет дополнительный столбец

Я сделал это для двухцветного макета, и он отлично работает. Однако для макета three_col в site1, например, я хочу расширить site1 / two_cols.html (который задает путь CSS), а затем просто включить содержимое 'common / three_cols.html' (который определяет дополнительный столбец).

Это не работает для меня, потому что three_cols.html содержит теги-заполнители django-cms, которые, поскольку я только «включаю» шаблон, по-видимому, не анализируются, а просто оцениваются.

Иными словами, я хочу, чтобы некоторые настройки в site1 / two_cols.html можно было использовать из site1 / three_cols.html, где они оба расширяют различные шаблоны.

Резюме

Моя проблема в том, как я могу включить что-то, как если бы оно было в родительском шаблоне (что, по словам документации django, включить не может: https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#include)?

1 Ответ

1 голос
/ 18 февраля 2012

Почему вы не можете сделать это с обычным extends?three_cols может расширить two_cols и добавить еще один столбец внутри основного блока, используя block.super для рендеринга исходных двух столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...