在Django 1.3中,我能否将STATICFILES_DIR设置成与STATIC_ROOT相同?

47
我正在使用Django 1.3并且发现它有一个collectstatic命令可以将静态文件收集到STATIC_ROOT中。在这里,我有一些其他需要使用STATICFILES_DIR提供服务的全局文件。

我能否让它们使用同一个目录?

谢谢。


我从stackoverflow上找到了答案。请点击以下链接:https://dev59.com/MWct5IYBdhLWcg3wWMFF - Madiyor
1个回答

93

不行。实际上,文件django/contrib/staticfiles/finders.py甚至会检查此项并在这样做时引发ImproperlyConfigured异常:

“STATICFILES_DIRS设置不应包含STATIC_ROOT设置”

STATICFILES_DIRS可以包含其他目录(不一定是应用程序目录)的静态文件,当您运行collectstatic时,这些静态文件将被收集到您的STATIC_ROOT中。然后,这些静态文件将由Web服务器提供,并从您的STATIC_ROOT提供。

如果您希望提供当前位于STATIC_ROOT中的文件,则需要将这些文件移动到另一个目录中,并将该其他目录放入STATICFILES_DIRS中。您的STATIC_ROOT目录应为空,并且所有静态文件都应收集到该目录中(即,它不应包含静态文件)。


10
那么我应该把属于网站但不属于特定应用程序的静态文件放在哪里? - lmiguelvargasf
1
只有在手动启动django时才会出现该异常。例如,当使用Apache服务器进行配置时,它可以完美运行。我认为这也是正确的,因为所有管理文件都被收集在static/admin/下。这样做可能会出现任何潜在问题吗? - Gianpaolo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接