Как сделать сквозной элемент с динамическими данными в 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.

В документации написано, что блоки инклуда высчитываются до того, как будут включены в главный шаблон. Т.е. по идее такое работать должно.
  • Вопрос задан
  • 623 просмотра
Решения вопроса 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...

Логика:

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

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

Войти через центр авторизации
Похожие вопросы