为什么Django 4.0只能通过STATICFILES_DIRS而不是STATIC_ROOT访问静态文件

wko9yo5t  于 2022-11-26  发布在  Go
关注(0)|答案(1)|浏览(186)

使用STATIC_ROOT时:

STATIC_ROOT = BASE_DIR / 'static'

Django不能访问静态文件,并且总是返回404错误。
但是当我使用STATICFILES_DIRS时:

STATICFILES_DIRS = [
    BASE_DIR / "static",
]

一切正常,有什么问题吗?
我不明白为什么Django会这样工作,我一直认为STATIC_ROOT是创建路由的正确方法。

gzszwxb4

gzszwxb41#

STATIC_ROOTcollectstatic命令将复制中所有静态文件的位置。
这个文件夹是用于生产的,所以你的项目中的所有静态文件(来自你的应用程序,或者第三方应用程序等)都保存在一个文件夹中,因此很容易在生产中使用。
默认情况下,Django会自动在每个应用目录中搜索静态文件(这对编写可重用应用很有帮助)。STATICFILES_DIRS设置允许您定义额外的位置来查找静态文件。
此外,STATIC_ROOT文件夹和STATICFILES_DIRS文件夹的值不应相同。

相关问题