我在我的模板中使用了包含标记,如下所示:
{% include fragment_variable %}
其中 fragment_variable 是可能不存在的上下文变量。我想知道当 fragment_variable 不在上下文变量中或者是None时它是否会爆炸。
注意:实际上我在两个不同的环境中测试了这个代码(都使用了Django 1.7),得到了两个不同的结果(一个用于模板查找的一些堆栈跟踪,另一个只是静默失败)。所以我很好奇django中是否有一个设置来控制当“include”标签找不到有效模板时模板渲染的行为。
答案 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
是最好的练习。