首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >{% load static %}和{% load static files%}:首选哪个?

{% load static %}和{% load static files%}:首选哪个?
EN

Stack Overflow用户
提问于 2015-12-23 03:19:12
回答 2查看 11.2K关注 0票数 17

我不确定有什么不同,看起来他们两个都在工作。我用谷歌搜索了一下,似乎它们几乎是一回事。出于好奇,人们在该领域使用哪一种?

我读过了,但仍然不知道什么时候使用哪个,这个领域的人使用哪个。我的对他们两个都有效。一开始我以为它是加载静态文件夹,但它也适用于静态文件…-

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-23 04:33:39

目前(Django1.9和更早版本),{% load staticfiles %}从contrib应用程序加载static模板标签,该应用程序具有比内置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 (否则保持默认行为),并且contrib包中的模板标签将被弃用,以避免混淆。

TL;DR

  • Before Django 1.10staticfiles加载可以管理非本地存储的模板标签,其中static不能(或不容易)
    • Before Django 1.10contrib.staticfiles应用程序仍然存在,但其模板标签将被移除,只有{% static %}模板标签仍保留Django 2.0 (我相信):{% load staticfiles %}被移除。

    <代码>F234

现在,如果你使用相关的contrib应用程序(并且你知道为什么要使用它),那么在Django1.10之前使用staticfiles模板标签,否则就使用static

票数 28
EN

Stack Overflow用户

发布于 2019-08-24 05:33:25

这是'django/contrib/staticfiles/templatetags/staticfiles.py‘中关于这个主题的一段有趣的代码:

代码语言:javascript
运行
复制
import warnings

from django import template
from django.templatetags.static import (
    do_static as _do_static, static as _static,
)
from django.utils.deprecation import RemovedInDjango30Warning

register = template.Library()


def static(path):
    warnings.warn(
        'django.contrib.staticfiles.templatetags.static() is deprecated in '
        'favor of django.templatetags.static.static().',
        RemovedInDjango30Warning,
        stacklevel=2,
    )
    return _static(path)


@register.tag('static')
def do_static(parser, token):
    warnings.warn(
        '{% load staticfiles %} is deprecated in favor of {% load static %}.',
        RemovedInDjango30Warning,
    )
    return _do_static(parser, token)

所以我敢假设{% load staticfiles%}将在django 3发布后被删除:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34422971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档