django的模板标签“include”如何与None一起使用

时间:2016-01-12 17:16:48

标签: django django-templates

我在我的模板中使用了包含标记,如下所示:

{% include fragment_variable %}

其中 fragment_variable 是可能不存在的上下文变量。我想知道当 fragment_variable 不在上下文变量中或者是None时它是否会爆炸。

注意:实际上我在两个不同的环境中测试了这个代码(都使用了Django 1.7),得到了两个不同的结果(一个用于模板查找的一些堆栈跟踪,另一个只是静默失败)。所以我很好奇django中是否有一个设置来控制当“include”标签找不到有效模板时模板渲染的行为。

1 个答案:

答案 0 :(得分:1)

{% if fragment_variable %}
    {% include fragment_variable %}
{% else %}
    <!-- something else -->
{% endif %}

修改

由于您使用的是1.8之前的django版本,请查看设置TEMPLATE_STRING_IF_INVALID,它会设置无效变量的默认值。

另请查看How invalid variables are handled

  

通常,如果变量不存在,则插入模板系统   引擎的string_if_invalid配置选项的值,   默认设置为''(空字符串)。

     

对于if,for和regroup,此行为略有不同   模板标签。如果为其中一个提供了无效变量   模板标签,该变量将被解释为无。过滤器是   始终应用于这些模板标记中的无效变量。

就此而言,我仍然认为使用if是最好的练习。