Как я могу передать стандартную статическую переменную из всех представлений в Django? - PullRequest
11 голосов
/ 23 февраля 2009

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

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

Ответы [ 4 ]

17 голосов
/ 23 февраля 2009

Есть несколько возможных решений вашей проблемы.

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

Альтернативным решением будет создание пользовательского тега шаблона и использование его в общем базовом шаблоне для всех страниц, для которых вы хотите иметь боковую панель. Шаблонные теги создать немного сложнее, но они более гибкие.

При любом из этих решений вы также должны взглянуть на структуру кэша Django . Инфраструктура кэширования позволяет довольно легко временно сохранять вычисленные значения на некоторое время, чтобы сохранить некоторую работу по каждому запросу.

4 голосов
/ 23 февраля 2009
0 голосов
/ 25 февраля 2009

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

0 голосов
/ 23 февраля 2009

Наследование шаблонов Django должно охватывать это. Вы можете создать базовый шаблон, который обрабатывает функциональность вашей боковой панели. Ваши другие представления расширяют этот шаблон.

Наследование шаблонов: http://www.djangobook.com/en/1.0/chapter04/#s-template-inheritance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...