Я пытаюсь добавить в свое приложение функцию, которая позволяла бы мне включать / отключать кнопку «Позвони мне» в зависимости от того, нахожусь ли я в [доме | офисе]. Я создал модель в базе данных с именем setting, она выглядит так:
class setting(models.Model):
key = models.CharField(max_length=200)
value = models.CharField(max_length=200)
Довольно просто. В настоящее время имеется одна доступная строка, значением которой является строка True. Я хочу иметь возможность прозрачно передавать переменные в шаблоны, как это:
{% if available %}
<!-- Display button -->
{% else %}
<!-- Display grayed out button -->
{% endif %}
Теперь я могу добавить логику в каждое представление, которое будет проверять базу данных, и передать переменную в шаблон, но я пытаюсь остаться DRY .
Каков наилучший способ сделать это?
UPDATE
Я создал процессор контекста и добавил его путь к TEMPLATE_CONTEXT_PROCESSORS, но он не передается в шаблон
def available(request):
available = Setting.objects.get(key="available")
if open.value == "True":
return {"available":True}
else:
return {}
ОБНОВЛЕНИЕ ВТОРОЕ
Если вы используете ярлык render_to_response, вам нужно передать экземпляр RequestContext в функцию.
из документации django :
Если вы используете ярлык Django render_to_response () для заполнения шаблона содержимым словаря, вашему шаблону будет передан экземпляр Context по умолчанию (не RequestContext). Чтобы использовать RequestContext в рендеринге шаблона, передайте необязательный третий аргумент для render_to_response (): экземпляр RequestContext. Ваш код может выглядеть так:
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
Большое спасибо за помощь!