我正在尝试添加一个功能到我的应用程序,这将允许我根据我是否在[家庭|办公室]启用/禁用“呼叫我”按钮 . 我在数据库中创建了一个名为settings的模型,它看起来像这样:
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 {}
UPDATE TWO 如果使用快捷方式render_to_response,则需要将RequestContext的实例传递给该函数 .
如果您使用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))
非常感谢所有的帮助!
1 回答
写一个custom context processor .