Django模板中的{%include ...%}标记和{%ssi ...已解析的%}标记之间有什么区别?

时间:2011-06-12 20:48:07

标签: python django django-templates

它们似乎基本相同除了你必须为ssi提供“安全性原因”的绝对路径。除了关键字参数(从版本1.3开始是新的),两者似乎具有完全相同的功能。它们真的是多余的吗?

1 个答案:

答案 0 :(得分:6)

如果没有parsed参数{% ssi %},所包含的文件将不会被视为Django模板,它将作为普通文本包含在内。这意味着如果包含的文件具有模板标签/过滤器,则不会对它们进行解释。

包含parsed参数时,差异会变得更像您所说的。

  • {% ssi %}增加了安全限制,因为您可能在文件系统中包含任何文件。
  • 您必须使用绝对URI而不是适合模板加载器的相对路径。
  • 在Django 1.5之前,第一个参数(路径)必须是不加引号的。这意味着您不能将模板变量用作第一个参数。

有关the documentation中最后一点的详细信息。