我不确定两者之间有什么区别,似乎他们两个都在工作。我四处搜寻,似乎他们几乎是同一回事。
出于好奇,人们在野外使用哪一个?

我读过该书,但仍然不知道何时使用哪个,以及在现场使用哪个人。我的工作为他们两个。起初我以为它正在加载静态文件夹,但它也适用于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/

10-11 10:32