Django шаблон включения - PullRequest
       5

Django шаблон включения

1 голос
/ 11 сентября 2010

Страница наследования шаблонов на сайте django действительно не решает мою проблему (Django 1.2).

Моя базовая страница выглядит следующим образом:

...
<div class="grid_12" id="content">
   {% block content %}{% endblock %}
</div>
...
{% block javascript %}{% endblock %}

У меня есть другой шаблон, который определяетсодержимое для них:

{% block content %}
   animated sidebar
{% endblock %}
...
{% block javascript %}
   alert('hello');
{% endblock %}

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

Какой самый лучший способчтобы решить эту проблему?

РЕДАКТИРОВАТЬ

Извините, я не прояснил.

У меня есть страницы контента, которые отображают шаблон, который расширяет"base.html".В "base.html" я хочу включить шаблон боковой панели, который должен добавлять блоки в "base.html".Итак, я попытался поместить include "sidebar.html" в «base.html», но он просто вставляет все, где находится тег «include».Я хочу добавить блоки в «base.html», которые сами могут быть заполнены «page.html».

Может быть, важно сказать, что «sidebar.html» полностью статичен- то есть нет вызываемого, связанного с этим.Поэтому, возможно, этот вопрос должен звучать так: «Как я могу включить статический шаблон в base.html, чтобы он добавлялся в блоки в base.html независимо от вывода фактического представления, которое обрабатывает запрос?»

Ответы [ 3 ]

1 голос
/ 11 сентября 2010

Я думаю, что вы хотите добавить в блок? Вы можете поместить {{ block.super }} туда, куда хотите, чтобы унаследованный контент шел. e.g.:

{% block javascript %}
    {{ block.super }}
    alert('hello');
{% endblock %}
0 голосов
/ 11 сентября 2010

Вы должны использовать что-то вроде jQuery для запуска выполнения только после полной загрузки страницы. Включите библиотеку jQuery в заголовок документа, а затем куда-нибудь:

$(document).ready(function() {
   //your code goes here
});
0 голосов
/ 11 сентября 2010

Вы должны только использовать {% block foo %} теги для расширения блоков в базовом шаблоне, поэтому я не понимаю, что вы имеете в виду, когда говорите, что не хотите расширитьit.

Код, который вы ввели, должен отображаться в

...
<div class="grid_12" id="content">
   animated sidebar
</div>
...
alert(hello)

Если вы не хотите добавлять содержимое (как в ответе Matt ) непонятно, что вы хотите, чтобы произошло.

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