Django |为什么要使用{%load static%}并使模板编译器更有效?

Django |为什么要使用{%load static%}并使模板编译器更有效?,django,django-templates,Django,Django Templates,对于像images/CSS/Js这样的静态资源,我可以直接使用它们的路径 <link rel="stylesheet" href="/static/css/default.min.css"> #in app level templates: <link rel="stylesheet" href="/static/myapp/css/app.min.css"> #应用程序级模板: 为什么要使用以下内容向模板添加杂波: {% load static %} <l

对于像images/CSS/Js这样的静态资源,我可以直接使用它们的路径

<link rel="stylesheet" href="/static/css/default.min.css">
#in app level templates:
<link rel="stylesheet" href="/static/myapp/css/app.min.css">


#应用程序级模板:
为什么要使用以下内容向模板添加杂波:

{% load static %}
<link rel="stylesheet" href="{% static 'css/default.min.css' %}" />
{%load static%}
除非在url末尾动态添加部分路径或版本。 我怀疑带有{%load static%}的模板性能较差(可能是可忽略的,但仍然是为什么?)


请你开导我,我想可能有一个强有力的理由

这样硬编码可能会在生产中产生一些问题。
相反,在设置中创建
static
root并始终使用它是一个好主意。此外,如果django知道它是一个静态文件,它不仅会查看“硬编码”位置,还会查看其他可能的位置。

好吧,当你说除非动态添加路径的一部分时,你回答了自己的问题,这正是你正在做的。这也有一个强有力的理由

“static”是您的静态URL。忘记静态根,它是一个“收集静态”然后将其移动到生产位置的地方

我在某处部署了一个Saas django门户,在生产环境中,我的静态URL(是的,“静态”如下所示:

我让一些性能良好的CDN在以某种方式将收集的文件移动到静态资产后为其提供服务

为了强调,我这样做是为了提高性能,您可能会决定使用像nginx这样的web服务器来服务静态资产,它们毕竟是静态的,nginx在这方面的性能非常好。通常,您可以配置静态url,让nginx从文件夹(static_ROOT)服务该url,并代理其他url,比如gunicorn


考虑编写良好的django文档以了解更多信息

STATIC\u URL='/STATIC/'STATIC\u ROOT=os.path.join(BASE\u DIR、'STATIC\u ROOT、'STATIC'))
即使在我的情况下,django项目结构中的这个链接文件将在app/myapp/static/app/css/app.min.css中,我仍然会设置这些设置,我们知道这是可行的。这是如何实现的?因此,如果我不使用任何CDN或不在django外部托管static,那么下面的性能应该更高,对吗?
#在app l中evel templates:
可能吧,但你的问题是为什么是静态的。如果你改变主意,决定以后以另一种方式提供静态文件,那么混乱就会迎刃而解,让你轻松切换。