我想使用mod_wsgi在Apache服务器上托管Django应用程序。
到目前为止,我一直使用Django的runserver实用程序进入开发环境。
我很惊讶当我从Django python模块运行collecstatic命令时,文件也被复制到STATIC_ROOT中。我希望只有css和图像文件...
这是正常行为吗?
由于
答案 0 :(得分:1)
collectstatic只是将它找到的所有文件复制到您指定的目录中以供查看。具体取决于您使用的查找程序(settings.py中为STATICFILES_FINDERS
)。默认情况下,AppDirectoriesFinder
已启用,它会查看应用程序目录中名为“static”的目录,以及FileSystemFinder
,它会查看settings.py中STATICFILES_DIRS
下指定的目录。
将复制这些目录中的所有文件。 Django不区分Python文件(例如模型,视图......)和其他文件类型。所以我猜你必须将你的Python文件放在错误的目录或查找路径上的错误目录中。您应该检查您的目录结构以解决您的问题。但是,您可以使用./manage.py collectstatic -i *.py
来快速修复它,根据docs,它会使collectstatic忽略所有扩展名为.py的文件。但是没有测试过。
我希望有所帮助。
答案 1 :(得分:1)
我遇到了同样的问题,发现这是因为我在STATICFILES_DIRS
元组中意外忘记了一个尾随逗号。
STATICFILES_DIRS = (
('', os.path.join(PROJECT_ROOT,'static')), # trailing comma to make this a tuple
)
与Python的情况一样,圆括号中至少没有一个逗号,它被解释为一个混淆设置的函数调用。
通常,在Django设置中总是很好的做法是在每个列表和元组项上放置一个逗号,或者单独使用列表,因为它们不需要单个项的逗号。