4

在 django 模板系统中使用load加载的自定义标签的范围是什么,尤其是 wrt Template Inheritance?

如何在模板层次结构树中有效地加载相同的自定义标签。我在文档中找不到任何信息。任何指针都会很有用。

谢谢。

4

1 回答 1

7

我也想知道这一点,发现缺少文档,所以我决定自己做一些测试。

从 django 1.4 开始,答案是:加载的自定义标签的范围仅限于它加载的文件(使用{% load %}),绝对没有别的

以下使用自定义标签的尝试均失败:

  • 模板 Aextend的模板 B:
    • 在 A 中加载并尝试在 B 中使用
    • 加载 A 并尝试在块内的 B 中使用
    • 在 A 中加载一个块并尝试在 B 中的同一块中使用,有或没有 super
  • 模板 Ainclude的模板 B:
    • 在 A 中加载并尝试在 B 中使用
    • 加载 A 并尝试使用显式传递到 Bwith context
  • 模板 A 包括模板 B 使用 `{% ssi ... parsed %}
    • 在 A 中加载并尝试在 B 中使用

所以是的,这严格来说是每个文件的事情(这很好,因为它使得不可能从远处松鼠在神秘标签中 - 当然除非你故意通过弄乱全局加载器来这样做(你不应该这样做) )

于 2012-08-16T18:36:24.197 回答