【发布时间】:2020-08-05 09:43:49
【问题描述】:
我正在使用最新版本的 Django 3。我已根据需要正确定义了静态文件目录。 目前要显示图像,以下两个源代码都可以正常工作。
代码 1:
<img src="static/img/logo.png">
代码 2:
{% load static %}
<img src="{% static 'img/logo.png' %}">
既然代码 sn-ps 都可以正常运行,没有任何问题,我想知道为什么不简单地使用上面代码 1 的方式,避免代码 2 的额外行。
哪一个是有益的,为什么?请指导。
【问题讨论】:
-
你应该 - 让它可配置。并且您的解决方案的行为应该对其他参与者(以及一段时间后的您自己)是可预测的。顺便说一句,您的示例代码 1 有一个缺陷:它缺少前导斜杠,这使得该 url 相对于当前页面 url,因此它在除根级页面之外的任何页面中都不起作用。
-
代码 1 正在运行,并且没有名为 static 的根级文件夹。它采用 settings.py 中定义的全局静态,我理解使其可配置的部分,但在项目期间我不会更改“静态”的名称。
-
code 1不使用 settings.py 中的任何内容,并且给定的 url 仍然是相对的。恐怕我根本没有谈论任何文件夹,只谈论网址。 -
感谢您的意见。据我了解,由于这是我的基础项目级主模板,它不会有任何影响。但是,我不能在具有不同级别模板的其他应用程序中使用类似的模式,这些模板嵌套在多个级别的 url 中。您是否仍然建议可以在主/基础项目级别模板中使用案例 1 以节省性能开销?
-
不是模板,而是 URL。模板不知道也不关心,响应它将呈现哪个 URL 请求。
<img src="static/img/logo.png">- 错误,因为相对,<img src="/static/img/logo.png">- 正确。但是,仍然建议在引用静态文件的任何地方都使用{% static 'asdf' %}模板标签。
标签: django django-templates django-staticfiles static-files