为什么在settings.ALLOWED_INCLUDE_ROOTS中使用变量不允许我使用{%ssi%}?

时间:2013-05-03 09:36:47

标签: django django-templates django-settings

问题

我正在使用Django 1.3。我将不得不在我的模板中使用许多不同的JavaScript函数(如10或其他)。

我首先要做的是将它们放在<script>标签中,该标签运行正常。但是现在它有效,我想将它们与模板代码分开。它会使代码更易于阅读。

所以我想到了使用{% ssi "..." parsed %}的东西。由于我在JavaScript代码中使用了Django模板标记,因此我不能仅使用<script src="..."></script>将其与静态文件链接起来。

这是有效的:

# This will allow the {% ssi %} tag to include files from the given paths
ALLOWED_INCLUDE_ROOTS = (
    '/THIS/IS/THE/FULL/PATH/TO/MY/PROJECT/static/js/',
)

以下是不起作用的:

# Project root for further paths
PROJECT_PATH = os.path.dirname(__file__)

# This will allow the {% ssi %} tag to include files from the given paths
ALLOWED_INCLUDE_ROOTS = (
    PROJECT_PATH+'/static/js/',
)

我仔细检查了两个字符串是否相同(./manage shell)并且它们完全相同(尾随/和所有)。


问题

  • 为什么第二个代码会在我的模板中呈现[Didn't have permission to include file]
  • 另外,我应该如何链接要包含在{% ssi %}标记中的文件?由于{% get_static_prefix %}不起作用,我目前正在使用该文件的完整路径,这很难看。

2 个答案:

答案 0 :(得分:0)

虽然看起来很奇怪,但我的settings.py没有做任何改变,但它现在已经是功能性的。我相信Mike Cooper是对的,而且一些远程代码正在打破ALLOWED_INCLUDE_ROOTS路径。

答案 1 :(得分:-2)

由于它的命名约定,

ALLOWED_INCLUDE_ROOTS可能是常量。常数并不是可变的。

http://en.wikipedia.org/wiki/Constant_(programming)#Naming_conventions