Боковая панель с django, макет или вид?



Я хочу сделать боковую панель для моего веб-приложения. Он содержит следующее содержание:




  • строка поиска

  • список тегов

  • ссылки на последние сообщения (с указанием года и месяца)


Я хочу включить эту боковую панель в каждый сайт / вид. Так что мое первое предположение, что это будет принадлежать макету.
Но он также динамичен, и, насколько я знаю, макеты статичны.



Как избежать избыточности в представлениях / макетах и сохранить боковую панель на каждом сайте?

458   2  

2 ответов:

Чтобы контекстные данные передавались в несколько шаблонов, у вас есть разные варианты в django; вы можете либо:

  • Создайте тег шаблона , который может тянуть в соответствующие данные и отображать их и повторно использовать в каждом шаблоне, который вам нужен (или просто вставьте его в базовый шаблон и используйте наследование шаблона).

  • Используйте контекстный процессор : он будет вызываться при каждом запросе и добавлять данные в контекст каждого представления, который использует RequestContext.

  • Используя представления на основе классов Django, вы можете иметь все свои представления, унаследованные от базового представления, которое добавляет данные в ваш контекст.

Если вам нужны данные из вашей базы данных, я бы предпочел использовать тег шаблона, а не контекстный процессор, поскольку он будет вызываться для каждого представления.

Для статического содержимого в боковой панели (например, форма поиска), его прямой шаблон/html.

Для динамического контента, такого как список тегов, последние сообщения: После того, как в шаблоне вы определили элементы (div или что-то еще), чтобы поместить эту информацию, вы можете заполнить его содержимое, используя либо тег пользовательского шаблона, либо пользовательский контекстный процессор.

В вашем случае, если содержимое на самом деле не зависит от параметра запроса или url, лучше использовать тег шаблона выбор.

Ссылка тег пользовательского шаблона пользовательский контекстный Процессор

Comments

    Ничего не найдено.