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