如果模板上下文变量不存在,如何注入它

时间:2012-08-09 01:59:41

标签: django django-templates django-context

我有base_template.html使用上下文变量my_context_var。我的所有其他模板都扩展了这个基本模板。你能帮我回答其中一个问题吗? (它们只是看待相同潜在问题的不同方式)

  1. 如何使my_context_var可用于所有衍生模板,但允许为特定视图覆盖my_context_var

  2. 只有当该变量不存在时,我才能将my_context_var注入模板上下文。

  3. 基本上,我正在为上下文变量寻找setdefaults()功能。如果有帮助,my_context_var基本上是一个空白的搜索表单,可以在我的网站的大多数页面中使用。我需要覆盖一个显示表单和结果的页面。目前的问题是,即使是那个结果页面,我仍然会得到空白表格。

3 个答案:

答案 0 :(得分:1)

您有几个选择:

您可以创建自己的RequestContext,并在网站中包含您想要的所有变量:Documentation

或者您可以创建模板标签并在任何模板中访问它们:Documentation

答案 1 :(得分:0)

由于它应该适用于您的所有观看,因此最佳选择是create a custom context processor。 Templatetags的缺点是你必须在需要这个变量的地方包含它们。创建自己的RequestContext作为D.A.在我看来,这说得太过分了。

答案 2 :(得分:0)

如果要在模板中设置变量(但仅当它尚不存在时),以下内容应该有效:

{% with my_context_var=my_context_var|default:"Value you want to set it to" %}
    {# The variable is accessible within then with block #}
    {{ my_context_var }}
{% endwith %}