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

Rah*_*hul 4 django-templates

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

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

谢谢.

rub*_*ruy 7

我也想知道这个,发现文档缺乏,所以我决定自己做一些测试.

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

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

  • 模板A extend模板B:
    • 在A中加载并尝试在B中使用
    • 在A中加载并尝试在块内使用B
    • 加载到A中的块中并尝试在B中的同一块中使用,有或没有超级
  • 模板A include模板B:
    • 加载A并尝试在B中使用
    • 在A中加载并尝试显式使用 with context
  • 包含模板B的模板A使用`{%ssi ... parsed%}
    • 在A中加载并尝试在B中使用

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