Как сделать сквозной элемент с динамическими данными в Django?

Всем привет.

Задача: сделать сквозной баннер на сайте, который можно легко менять (через админку).

Как пытаюсь решить:

1) сделал: модель/урл/вьюшку/шаблон для страницы с баннером. (как обычный рендер страницы).
2) в шаблоне баннера указал динамические данные по типу

# код внутри шаблона banner.html

<p>{{  banner.img.url }}</p>
<p>{{  banner.link }}</p>


3) Через инклуд вставил страницу баннера на все страницы сайта.

{% include 'faceset/banner.html' %}

В итоге, на страницу выводится:

<p></p>
<p></p>


т.е. динамические данные не подхватываются.

Можете подсказать, как такое можно реализовать или в чем моя ошибка?

P.s.

В документации написано, что блоки инклуда высчитываются до того, как будут включены в главный шаблон. Т.е. по идее такое работать должно.
  • Вопрос задан
  • 643 просмотра
Решения вопроса 3
tema_sun
@tema_sun
Вам нужен кастомный context_processors.
Ответ написан
Комментировать
sim3x
@sim3x
banner нужно будет добавить в контекст во всех вьюхах

context_processor лучше не использовать в повседневной разработке
Ответ написан
Terras
@Terras Автор вопроса
Нашел решение:

Inclusion tags - https://docs.djangoproject.com/en/1.9/howto/custom...

Логика:

Создаем библиотеку тегов, создаем в ней тег, который рендерит модель в шаблон, подключаем тег во все шаблоны. Работает. По скорости правда не подскажу насколько будет грузить все.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы