首页 文章

基于db将变量传递给模板

提问于
浏览
2

我正在尝试添加一个功能到我的应用程序,这将允许我根据我是否在[家庭|办公室]启用/禁用“呼叫我”按钮 . 我在数据库中创建了一个名为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 documentation

如果您使用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 回答

相关问题