使用STATIC_ROOT时:
STATIC_ROOT = BASE_DIR / 'static'
Django不能访问静态文件,并且总是返回404错误。但是当我使用STATICFILES_DIRS时:
STATICFILES_DIRS = [ BASE_DIR / "static", ]
一切正常,有什么问题吗?我不明白为什么Django会这样工作,我一直认为STATIC_ROOT是创建路由的正确方法。
gzszwxb41#
STATIC_ROOT是collectstatic命令将复制中所有静态文件的位置。这个文件夹是用于生产的,所以你的项目中的所有静态文件(来自你的应用程序,或者第三方应用程序等)都保存在一个文件夹中,因此很容易在生产中使用。默认情况下,Django会自动在每个应用目录中搜索静态文件(这对编写可重用应用很有帮助)。STATICFILES_DIRS设置允许您定义额外的位置来查找静态文件。此外,STATIC_ROOT文件夹和STATICFILES_DIRS文件夹的值不应相同。
STATIC_ROOT
collectstatic
STATICFILES_DIRS
1条答案
按热度按时间gzszwxb41#
STATIC_ROOT
是collectstatic
命令将复制中所有静态文件的位置。这个文件夹是用于生产的,所以你的项目中的所有静态文件(来自你的应用程序,或者第三方应用程序等)都保存在一个文件夹中,因此很容易在生产中使用。
默认情况下,Django会自动在每个应用目录中搜索静态文件(这对编写可重用应用很有帮助)。
STATICFILES_DIRS
设置允许您定义额外的位置来查找静态文件。此外,
STATIC_ROOT
文件夹和STATICFILES_DIRS
文件夹的值不应相同。