gpt4 book ai didi

python - Django 中的 STATIC_URL 和 STATIC_ROOT 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 17:45:45 25 4
gpt4 key购买 nike

对于 Django 的 'staticfiles' 应用程序中 STATIC_URL 和 STATIC_ROOT 之间的区别,我有些困惑。

我相信我了解 STATIC_ROOT 是什么:它本质上是服务器上静态文件的 collectstatic 命令将放置从您的 django 项目收集的静态文件的位置。 collectstatic 命令在您在 STATIC_FINDERS 设置中指定的位置进行搜索。

但是,STATIC_URL 到底做了什么?这应该设置成什么?显然,它旨在进行设置,以便用户可以访问静态文件。但是它和 STATIC_ROOT 有什么关系呢?

为什么 STATIC_URL 的默认值只是 /static/STATIC_URL 是否必须能够引用 STATIC_ROOT

最佳答案

正如您提到的,从文档中可以清楚地看出:

STATIC_ROOT:

The absolute path to the directory where collectstatic will collect static files for deployment.

STATIC_URL

default: None

URL to use when referring to static files located in STATIC_ROOT.

Example: "/static/" or "http://static.example.com/"

同时,STATIC_ROOT 只是收集静态文件的目录的路径,STATIC_URL 是将为这些静态文件提供服务的 URL。

而且,正如您在示例中看到的,您可以将 STATIC_URL 定义为子域 "http://static.example.com/" 并且当您使用它在模板中:

<link rel="stylesheet" href="{{ STATIC_URL }}css/base.css" type="text/css" />

它将被视为:

<link rel="stylesheet" href="http://static.example.com/css/base.css" type="text/css" />

但是,如果 STATIC_URL 只是 /static/ 那么上面的链接将指向:

<link rel="stylesheet" href="/static/css/base.css" type="text/css" />

并且,由于此 href/ 开头,它将附加您的域以访问静态文件:http://yourdomain/static/css/base/CSS


Why is the default value of STATIC_URL simply /static/ ? Does STATIC_URL have to be able to reference STATIC_ROOT?

STATIC_URL 的默认值不是 /static/,而是 None,正如您在文档中看到的那样。而且,它不必引用 STATIC_ROOT,因为它不依赖于它(如上例所示)。

关于python - Django 中的 STATIC_URL 和 STATIC_ROOT 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37716200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com