我真的需要在 Django 模板中使用 % load static % 吗?

Posted

技术标签:

【中文标题】我真的需要在 Django 模板中使用 % load static % 吗?【英文标题】:Do I really need to use % load static % in Django Templates?我真的需要在 Django 模板中使用 % load static % 吗? 【发布时间】: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 请求。 &lt;img src="static/img/logo.png"&gt; - 错误,因为相对,&lt;img src="/static/img/logo.png"&gt; - 正确。但是,仍然建议在引用静态文件的任何地方都使用% static 'asdf' % 模板标签。 【参考方案1】:

基本/主级别模板可以在没有静态标签的情况下工作,并且可能会考虑性能。

但是,对于嵌套或在应用程序模板或嵌套 url 中的其他级别模板,需要使用静态引用,因为它可以最大限度地减少出错的机会。因此对于所有其他模板,建议使用静态标签。

【讨论】:

以上是关于我真的需要在 Django 模板中使用 % load static % 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何在模板中获取语言代码?

在 JavaScript 文件中使用 Django 模板标签

比较Django模板中2个列表之间的时间

Django,表单未在模板中呈现

如何在 Django 模板中使用变量索引访问列表?

在 django 模板中使用 python 字符串格式化