我真的需要在 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 请求。 <img src="static/img/logo.png">
- 错误,因为相对,<img src="/static/img/logo.png">
- 正确。但是,仍然建议在引用静态文件的任何地方都使用% static 'asdf' %
模板标签。
【参考方案1】:
基本/主级别模板可以在没有静态标签的情况下工作,并且可能会考虑性能。
但是,对于嵌套或在应用程序模板或嵌套 url 中的其他级别模板,需要使用静态引用,因为它可以最大限度地减少出错的机会。因此对于所有其他模板,建议使用静态标签。
【讨论】:
以上是关于我真的需要在 Django 模板中使用 % load static % 吗?的主要内容,如果未能解决你的问题,请参考以下文章