Боковая панель с django, макет или вид?
Я хочу сделать боковую панель для моего веб-приложения. Он содержит следующее содержание:
- строка поиска
- список тегов
- ссылки на последние сообщения (с указанием года и месяца)
Я хочу включить эту боковую панель в каждый сайт / вид. Так что мое первое предположение, что это будет принадлежать макету.
Но он также динамичен, и, насколько я знаю, макеты статичны.
Как избежать избыточности в представлениях / макетах и сохранить боковую панель на каждом сайте?
2 ответов:
Чтобы контекстные данные передавались в несколько шаблонов, у вас есть разные варианты в django; вы можете либо:
Создайте тег шаблона , который может тянуть в соответствующие данные и отображать их и повторно использовать в каждом шаблоне, который вам нужен (или просто вставьте его в базовый шаблон и используйте наследование шаблона).
Используйте контекстный процессор : он будет вызываться при каждом запросе и добавлять данные в контекст каждого представления, который использует
RequestContext.Используя представления на основе классов Django, вы можете иметь все свои представления, унаследованные от базового представления, которое добавляет данные в ваш контекст.
Если вам нужны данные из вашей базы данных, я бы предпочел использовать тег шаблона, а не контекстный процессор, поскольку он будет вызываться для каждого представления.
Для статического содержимого в боковой панели (например, форма поиска), его прямой шаблон/html.
Для динамического контента, такого как список тегов, последние сообщения: После того, как в шаблоне вы определили элементы (div или что-то еще), чтобы поместить эту информацию, вы можете заполнить его содержимое, используя либо тег пользовательского шаблона, либо пользовательский контекстный процессор.
В вашем случае, если содержимое на самом деле не зависит от параметра запроса или url, лучше использовать тег шаблона выбор.
Ссылка тег пользовательского шаблона пользовательский контекстный Процессор
Comments