Django模板中的load标记的范围是什么?

时间:2012-05-01 11:03:38

标签: django-templates

在django模板系统中使用load加载自定义标记的范围,尤其是w.r.t模板继承?

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

感谢。

1 个答案:

答案 0 :(得分:7)

我也对此感到疑惑并发现文档缺乏,所以我决定自己做一些测试。

从django 1.4开始,答案是:加载的自定义标记的范围严格限制在加载的文件中(使用{% load %}),绝对没有其他内容。< / p>

以下尝试使用自定义标记失败:

  • 模板A extend s模板B:
    • 加载A并尝试在B
    • 中使用
    • 在A中加载并尝试在块内的B中使用
    • 加载到A中的块中并尝试在B中的同一块中使用,有或没有超级
  • 模板A include s模板B:
    • 加载A并尝试在B
    • 中使用
    • 加载A并尝试使用with context
    • 明确传入B.
  • 包含模板B的模板A使用`{%ssi ...已解析%}
    • 加载A并尝试在B
    • 中使用

所以是的,它严格来说是一个文件的东西(这很好,因为它不可能从远处松开神秘的标签 - 除非你故意通过弄乱全局装载机(你不应该这样做)这样做“t))的