首页 > 解决方案 > 姜戈 | 为什么要使用 {% load static %} 并使模板编译器工作得更多?

问题描述

对于图像/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' %}" />

除非您在 url 末尾动态添加部分路径或版本。我怀疑带有 {% load static %} 的模板性能会降低(可能可以忽略,但为什么?)

请赐教,我认为可能有一个强有力的理由。

标签: djangodjango-templates

解决方案


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

“静态”是您的 STATIC_URL。忘记 static_root,它是您“收集静态”然后将其移动到生产位置的地方。

我在某个地方部署了一个 Saas django 门户,在生产中我的 STATIC_URL (是的,“静态”变为以下内容:

https://some-cdn-somewhere.com/me-static-assets/static/在以某种方式将收集的文件移动到它之后,我让一些高性能 CD​​N 提供静态资产。

强调一下,我这样做是为了提高性能,您可能会决定使用像 nginx 这样的 Web 服务器来提供静态资产,它们毕竟是静态的,而 nginx 非常适合这种情况。通常,您配置静态 url 并让 nginx 从文件夹 (STATIC_ROOT) 提供该静态 url,并代理其他 url 说 gunicorn。

考虑编写良好的 django 文档以获取更多信息https://docs.djangoproject.com/en/3.0/howto/static-files/deployment/


推荐阅读