我不确定两者之间有什么区别,似乎他们两个都在工作。我四处搜寻,似乎他们几乎是同一回事。
出于好奇,人们在野外使用哪一个?
我读过该书,但仍然不知道何时使用哪个,以及在现场使用哪个人。我的工作为他们两个。起初我以为它正在加载静态文件夹,但它也适用于staticfiles…–
最佳答案
目前(Django 1.9和更早版本),{% load staticfiles %}
从contrib应用程序加载static
模板标签,该模板标签具有比内置django.core.static
更多的功能。
最重要的区别是staticfiles
可以管理CDN上存储的文件,因为它的解析器可以管理例如哈希。 core.static
仅将STATIC_URL
附加到静态文件名,如果您正在处理文件,这是不够的(例如,添加md5哈希值以清除版本之间的缓存)
这种差异是由于以下事实造成的:管理非本地存储文件并非专门包含在Django的核心软件包中,但是对于许多开发人员而言,仍可以作为正式的contrib软件包来实现。因此,如果您开始使用staticfiles
,则必须记住在模板中每个都使用它。但是,可能会出现一些问题,例如当using Media
classes时,因此决定将这两个模板标签合并为一个,并使用不同的行为,无论开发人员是否在其django.contrib.staticfiles
中使用了INSTALLED_APPS
。
从Django 1.10 and onwards(也从see ticket in Django tracker)开始,{% load static %}
将在内部使用staticfiles
(如果已激活)(否则,请保留默认行为),并且contrib包中的templatetag将被弃用以避免混淆。
TL; DR
在Django 1.10之前:staticfiles
加载一个模板标签,该模板标签可以管理static
不能(或不容易)的非本地存储;
从Django 1.10开始:contrib.staticfiles
应用仍然存在,但其模板标记将被删除,只有{% static %}
模板标记保留;
从Django 2.0(我相信):{% load staticfiles %}
被删除。
现在,如果您使用相关的contrib应用程序(并且知道为什么要使用它),请在Django 1.10之前使用staticfiles
templatetags,否则请使用static
。
关于django - {%load static%}和{%load staticfiles%}:哪个是首选?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34422971/