Задать вопрос

Django: Как добавить данные из бд на каждую страницу (а-ля @inject in Laravel)?

Всем привет, на каждой странице в подвале расположен блок с контактами. Сами контакты хранятся в БД. Первое, что приходит в голову: в кажом view в context добавлять выборку из бд по ключу contacts, но если кол-во view разрастется, то все это станет неупровляемым. Вторая мысль: написать свой context processor возвращающий словарь, состоящий из выборки из бд, после чего append'ить его к основному контексту формируемому во View и скармливать шаблону. Тут тоже есть несколько вопросов, правильно ли обращаться к бд из context processor и потом джойнить их с контекстом формируемым во View? Может есть решение которое плавает где-то в документации, куда я еще не дорылся?

p.s.: например, в php фреймворке laravel есть функция @inject встроенная в blade которая позволяет обращаться к ORM сущности прям из шаблона.
  • Вопрос задан
  • 415 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 2
sim3x
@sim3x
В случае fbv - functional based views - делаем функцию, которая возвращает контекст и исполняем ее в каждом вью

CBV - ContextMixin

Менее желательно, использовать context processor
Cовсем плохо - tags
Ответ написан
Astrohas
@Astrohas
Python/Django Developer
TemplateTags https://docs.djangoproject.com/en/1.11/howto/custo...

Если коротко создаете кастомный тег, используете его в шаблоне и PROFIT
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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