2

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

  1. 如何使my_context_var所有派生模板可用,但允许覆盖my_context_var特定视图的方法。

  2. my_context_var仅当该变量不存在时,我如何才能注入模板上下文。

本质上,我正在寻找上下文变量的 setdefaults() 功能。如果有帮助,my_context_var基本上是一个空白搜索表单,在我网站的大多数页面中都可用。我需要为一个同时显示表单和结果的页面覆盖它。当前的问题是,即使对于该结果页面,我也不断收到空白表单。

4

3 回答 3

1

你有几个选择:

您可以创建自己的 RequestContext 并通过您的站点包含您想要的所有变量:文档

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

于 2012-08-09T02:05:01.207 回答
0

由于它应该适用于您的所有视图,因此最好的选择是创建自定义上下文处理器。模板标签的缺点是您必须在需要此变量的任何地方包含它们。RequestContext在我看来,像 DA 所说的那样创建自己的东西是多余的。

于 2012-08-09T04:11:11.373 回答
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 %}
于 2013-05-10T00:59:04.513 回答