我运行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'),
]
我该如何解决这个问题?
答案 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