用django运行collectstatic时是否正常,python模块也被复制了?

时间:2012-03-13 22:17:56

标签: django apache mod-wsgi

我想使用mod_wsgi在Apache服务器上托管Django应用程序。

到目前为止,我一直使用Django的runserver实用程序进入开发环境。

我很惊讶当我从Django python模块运行collecstatic命令时,文件也被复制到STATIC_ROOT中。我希望只有css和图像文件...

这是正常行为吗?

由于

2 个答案:

答案 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设置中总是很好的做法是在每个列表和元组项上放置一个逗号,或者单独使用列表,因为它们不需要单个项的逗号。