Автоматически добавлять переменную в контекст для каждого приложения в Django? - PullRequest
2 голосов
/ 16 октября 2010

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

Пример:

приложения / someapp / views.py:

def_context_var('app_name', 'Calendar')

templates / base.html:

{% if app_name %}You are in {{ app_name }} app.{% endif %}
....
{% if app_name %}Subsections of {{ app_name }}: ...{% endif %}

Я считал следующее:

  1. Объявите переменную в приложении (в представлении или в URL) и создайте контекстный процессор. Но я не могу понять, как извлечь эту переменную, учитывая объект запроса.
  2. Поставь декораторы на представления. Хм, мне не нравится идея: слишком много шаблонного или дублированного кода.
  3. # 1, но приятнее: сделать методы (как в примере выше), которые выполняются при перезапуске сервера, записать данные в dict, затем контекстный процессор каким-то образом (как?) Получает имя приложения и извлекает данные из ДИКТ. Куда поместить метод, дикт, как процессор контекста узнает, где находится объект представления?

1 Ответ

2 голосов
/ 16 октября 2010

Вы можете вызвать resolve(request.path) в процессоре контекста для разрешения текущего URL.Обратитесь к документации django по resol для значений возврата , особенно app_name

...