Django收集静态文件失败

时间:2018-04-03 23:46:48

标签: python django

我运行python manage.py collectstatic

它说You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.

这是我的settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
]

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

STATICFILES_DIRS告诉django在使用collectstatic命令时要查找要收集的文件

STATIC_ROOT="../my_real_static_folder"会告诉django将其收集的静态文件放在那里,static_url将从那里获取文件。

...但是通过django警告提供静态文件仅在debug为True(在settings.py中)时才有效,并且在生产环境中强烈反对

答案 1 :(得分:2)

您需要将STATIC_ROOT作为参数添加到settings.py。

以下是这些静态文件的工作原理:

STATICFILES_DIRS中,您告诉django去哪里寻找静态文件。这主要不是为了服务他们,而是为了收集它们!关键是在生产服务器上,django不应该服务于静态文件,这个任务应该由Web服务器处理。 Check the docs for details.我的想法是你运行命令python manage.py collectstatic,django将遍历STATICFILES_DIRS中的所有路径,收集静态文件并将它们放入...... - 完全正确! - 进入STATIC_ROOT文件夹。

此时 2件事应该变得清晰

1。您需要在settings.py中提供STATIC_ROOT

2. STATIC_ROOT中提供的路径不能成为STATICFILES_DIRS的一部分,因为这意味着django需要将文件夹放入其中。

同样,这是一个高效的服务器。在开发期间,django可以在没有Web服务器帮助的情况下处理静态文件,here更多来自文档。但是,始终需要STATIC_ROOT参数。

希望有助于澄清事情。快乐的编码! :)

答案 2 :(得分:1)

在settings.py中设置STATIC_ROOT = 'path to ur static root directory'。 请注意,当您运行collectstatic时,来自您的静态目录的所有文件都将收集到上面静态根路径中提供的静态根目录。您可以在文档here

中找到有关此内容的更多信息