首页 文章

{%load static%}和{%load staticfiles%}:哪个更受欢迎?

提问于
浏览
11

我不确定它们的区别是什么,看起来它们都在起作用 . 我用Google搜索,似乎它们几乎是一样的 . 只是出于好奇,人们在现场使用哪一个?

我读过但仍然不知道何时使用哪个,以及该领域的哪个人使用 . 我的工作都适合他们 . 起初我以为它是加载静态文件夹,但它也适用于静态文件... -

1 回答

  • 22

    目前(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.10staticfiles 加载了一个模板标签,可以管理 static 不能(或不容易)的非本地存储;

    • From Django 1.10contrib.staticfiles 应用程序仍然存在但其模板标签将被删除只有 {% static %} templatetags保留;

    • From Django 2.0 (我相信): {% load staticfiles %} 已被删除 .

    现在,如果您使用相关的contrib应用程序(并且您知道为什么使用它),请使用 staticfiles templatetags,直到Django 1.10,否则只使用 static .

相关问题